天天看點

linux下的udp用戶端,linux環境下基于UDP的 用戶端伺服器模型

#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;

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;

}