#include #define SERVER_PORT8000
#define MAXLINE1500//MTU 最大传输单元
int main(void)
{
int sockfd, i;
struct sockaddr_in serveraddr, clientaddr;
char buf[MAXLINE];
char ipstr[INET_ADDRSTRLEN]; //16 Bytes
socklen_t clientlen;
ssize_t len;
/* 构造用于UDP的套接字 */
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
bzero(&serveraddr, sizeof(serveraddr));
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.s_addr = htonl(INADDR_ANY); //本地任意IP
//printf("%x\n", INADDR_ANY); //这个直为0
serveraddr.sin_port = htons(SERVER_PORT);
bind(sockfd, (struct sockaddr *)&serveraddr, sizeof(serveraddr));
while (1) {
clientlen = sizeof(clientaddr);
len =recvfrom(sockfd, buf, sizeof(buf), 0, (struct sockaddr *)&clientaddr, &clientlen);
printf("client IP %s\tPORT %d\n", inet_ntop(AF_INET, &clientaddr.sin_addr.s_addr, ipstr, sizeof(ipstr)), ntohs(clientaddr.sin_port));
i = 0;
while (i < len) {
buf[i] = toupper(buf[i]);
i++;
}
//buf[i] = '\0';
sendto(sockfd, buf, strlen(buf), 0, (struct sockaddr *)&clientaddr, sizeof(clientaddr));
}
close(sockfd);
return 0;
}