📄 p12-25.c
字号:
#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <stdio.h>#include "err_exit.h"#define MAXMSG 1024int main(void){ int sock,size,nbytes; struct sockaddr_in name; char message[MAXMSG]; /* 创建数据报套接字 */ sock = socket(AF_INET, SOCK_DGRAM, 0); if (sock < 0) err_exit("opening datagram socket"); /* 用通配符命名该套接字 */ bzero(&name,sizeof(name)); name.sin_family = AF_INET; name.sin_addr.s_addr = htonl(INADDR_ANY); name.sin_port = htons(0); if (bind(sock, &name, sizeof(name))) err_exit("binding datagram socket"); /* 查出并打印系统赋给的端口值 */ size = sizeof(name); if (getsockname(sock, &name, &size)) err_exit("getting socket name"); printf("Socket has port #%d\n", ntohs(name.sin_port)); while(1){ /* 从套接字读数据 */ size = sizeof(name); nbytes = recvfrom(sock, message, MAXMSG, 0,(struct sockaddr *)&name, &size); if (nbytes < 0) err_exit("recfrom (server)"); /* 打印出收到的消息 */ printf("Server got message: %s\n", message); /* 将消息返回给发送者 */ nbytes = sendto(sock, message, nbytes, 0,(struct sockaddr *)&name, size); if (nbytes < 0) err_exit("sendto(server)"); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -