使用UDP手实现两台主机主机直接的通信,使用两个线程,一个用于接受一个用于发送,两台主机的端口号必须相同- /**************************************************************************
- *
- * 设计客户端和服务器之间的全双工通信 客户端程序
- * author:jindouliu2024@163.com
- * date:2025.5.14
- * notice:argv[1]:服务器的端口 argv[2]:服务器的IP
- * argv[3]:客户端(本地)的端口 argv[4]:客户端(本地)的IP
- *
- * Copyright (c) 2024-2025 jindouliu2024@163.com All right Reserved
- * *************************************************************************/
复制代码 [code]#include#include#include#include#include#include #include#include#include#include pthread_t task1_id;pthread_t task2_id;int udp_socket;char *data[4];struct sockaddr_in server_addr;struct sockaddr_in client;//向服务器发送数据void * task1(void *arg){ char buf[128] = "this is task1,client sending"; while(1){ //发送数据 sendto(udp_socket,buf,strlen(buf),0,(struct sockaddr *)&server_addr,sizeof(server_addr)); sleep(10); } pthread_exit(NULL);}//接收服务器的数据void *task2(void *arg){ char buf[128] = {0}; struct sockaddr_in server; socklen_t server_size = sizeof(server); while (1) { // 准备接收数据 int bytes_received = recvfrom(udp_socket, buf, sizeof(buf), 0, (struct sockaddr *)&server, &server_size); if (bytes_received > 0) { printf("data is %s\n", buf); } else { fprintf(stderr, "recvfrom error errno:%d,%s", errno, strerror(errno)); } bzero(buf, sizeof(buf)); } pthread_exit(NULL);}int main(int argc,char *argv[]){ for(int i=0;i |