UDP-双向通信
使用UDP手实现两台主机主机直接的通信,使用两个线程,一个用于接受一个用于发送,两台主机的端口号必须相同/**************************************************************************
*
* 设计客户端和服务器之间的全双工通信 客户端程序
* author:jindouliu2024@163.com
* date:2025.5.14
* notice:argv:服务器的端口 argv:服务器的IP
* argv:客户端(本地)的端口 argv:客户端(本地)的IP
*
* Copyright (c)2024-2025 jindouliu2024@163.com All right Reserved
* *************************************************************************/#include#include#include#include#include#include #include#include#include#include pthread_t task1_id;pthread_t task2_id;int udp_socket;char *data;struct sockaddr_in server_addr;struct sockaddr_in client;//向服务器发送数据void * task1(void *arg){ char buf = "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 = {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
页:
[1]