C语言网络编程——udp通信

C语言网络编程——udp通信

2023年7月15日发(作者:)

C语⾔⽹络编程——udp通信⽹络编程——udp通信客户端:#include #include #include #include #include #include #include #include #include typedef struct message{ char mtext[1024]; int mtype;}Message;void do_user(void *arg){ int ret; char buf[1024]; int sockfd = *(int *)arg; struct sockaddr_in peer_addr; int peer_addr_len = sizeof(peer_addr); while (1) { printf("Wait "); ret = recvfrom(sockfd, buf, sizeof(buf) - 1, 0, (struct sockaddr *)&peer_addr, &peer_addr_len); if (ret < 0) { perror("Fail "); } buf[ret] = '0'; printf("收到来⾃<%s><%d>%d字节的消息 > %sn", inet_ntoa(peer__addr), ntohs(peer__port), ret, buf); bzero(&peer_addr, sizeof(peer_addr)); }}char *message(char *msg, int msg_len){ bzero(msg, sizeof(msg_len)); printf("input msg >"); fgets(msg, msg_len, stdin); msg[strlen(msg) - 1] = '0'; return msg;}int main(int argc, char const *argv[]){ int ret; int sockfd; pthread_t pid; char msg[1024]; int msg_len = sizeof(msg); struct sockaddr_in self_addr; struct sockaddr_in dest_addr; sockfd = socket(AF_INET, SOCK_DGRAM, 0); if (sockfd < 0) { perror("fail to create sockfd"); exit(-1); } self__family = AF_INET; self__port = htons(8888); self__addr.s_addr = inet_addr("192.168.2.193"); ret = bind(sockfd, (const struct sockaddr *)&self_addr, sizeof(self_addr)); if (ret < 0) { perror("fail to bond"); exit(-1); } dest__family = AF_INET; dest__addr.s_addr = inet_addr("192.168.2.193"); dest__port = htons(7777); ret = pthread_create(&pid, NULL, (void *)do_user, &sockfd); while (1) { getchar(); message(msg, msg_len); printf("msg > %s,len > %ldn", msg, strlen(msg)); ret = sendto(sockfd, msg, strlen(msg), 0, (const struct sockaddr *)&dest_addr, sizeof(dest_addr)); if (ret < 0) { perror("fail to sendto.."); } } return 0;}服务器端:#include #include #include #include #include #include #include #include #include char *message(char *msg, int msg_len){ bzero(msg, sizeof(msg_len)); printf("input msg >"); fgets(msg, msg_len, stdin); msg[strlen(msg) - 1] = '0'; return msg;}void do_user(void *arg){ int ret; char msg[1024]; int msg_len = sizeof(msg); int sockfd = *(int *)arg; struct sockaddr_in dest_addr; dest__family = AF_INET; dest__addr.s_addr = inet_addr("192.168.2.193"); dest__port = htons(8888); //printf("msg > %s,len > %ldn", msg, strlen(msg)); while (1) { getchar(); message(msg, msg_len); ret = sendto(sockfd, msg, strlen(msg), 0, (const struct sockaddr *)&dest_addr, sizeof(dest_addr)); if (ret < 0) { perror("fail to sendto.."); perror("fail to sendto.."); } }}int main(int argc, char const *argv[]){ int ret; int sockfd; char buf[1024]; pthread_t pid; struct sockaddr_in self_addr; struct sockaddr_in peer_addr; int peer_addr_len = sizeof(peer_addr); sockfd = socket(AF_INET, SOCK_DGRAM, 0); if (sockfd < 0) { perror("fail to create sockfd"); exit(-1); } self__family = AF_INET; self__port = htons(7777); self__addr.s_addr = inet_addr("192.168.2.193"); ret = bind(sockfd, (const struct sockaddr *)&self_addr, sizeof(self_addr)); if (ret < 0) { perror("fail to bind"); exit(-1); } ret = pthread_create(&pid, NULL, (void *)do_user, &sockfd); while (1) { printf("Wait "); ret = recvfrom(sockfd, buf, sizeof(buf) - 1, 0, (struct sockaddr *)&peer_addr, &peer_addr_len); if (ret < 0) { perror("Fail "); } buf[ret] = '0'; printf("收到来⾃<%s><%d>%d字节的消息 > %sn", inet_ntoa(peer__addr), ntohs(peer__port), ret, buf); bzero(&peer_addr, sizeof(peer_addr)); } return 0;}结果:服务器与客户端可双向通信

发布者:admin,转转请注明出处:http://www.yc00.com/web/1689408391a243277.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信