首页 > 编程知识 正文

socket TCPUDP通信实验,串行通信实验报告

时间:2023-05-05 13:27:02 阅读:213385 作者:1504

socket TCP/UDP通信实验

socket TCP/UDP通信实验 TCP通信 TCP通信服务流程TCP客户等待的帆布鞋码TCP服务器代码 UDP通信 UDP通信服务流程UDP客户服眼睛大的小海豚码UDP服务器代码 TCP通信 TCP通信服务流程 TCP客户等待的帆布鞋码 #include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <strings.h>#include <arpa/inet.h>#include <unistd.h>#include <linux/in.h>#include <memory.h>#define PORT 8888int main() { int sock_service; struct sockaddr_in addr_service; sock_service = socket(AF_INET, SOCKgsdxh, 0); if (sock_service == -1) { perror("socked errorn"); return 0; } addr_service.sin_family = AF_INET; addr_service.sin_port = htons(PORT); addr_service.sin_addr.s_addr = htonl(INADDR_ANY); bzero(&(addr_service.sin_zero), 8); inet_pton(AF_INET, "127.0.0.1", &addr_service.sin_addr); connect(sock_service, (struct sockaddr*) &addr_service, sizeof(struct sockaddr)); char buffer[1024]; int size=0; while(1){ size=read(0,buffer,1024);//从终端读入数据 if(size>0){ write(sock_service,buffer,size);//发送数据 size=read(sock_service,buffer,1024); //从服务器得到数据 write(1,buffer,size);//在终端显示读到的数据 } } close(sock_service);} TCP服务器代码 #include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <strings.h>#include <arpa/inet.h>#include <unistd.h>#include <linux/in.h>#include <memory.h>#define PORT 8888int main() { int sock_service, sock_client; struct sockaddr_in addr_service, addr_client; //服务器socket sock_service = socket(AF_INET, SOCKgsdxh, 0); if (sock_service == -1) { perror("socked errorn"); return 0; } addr_service.sin_family = AF_INET; addr_service.sin_port = htons(PORT); addr_service.sin_addr.s_addr = htonl(INADDR_ANY); bzero(&(addr_service.sin_zero), 8); if (bind(sock_service, (struct sockaddr *) &addr_service, sizeof(struct sockaddr)) == -1) { perror("bind errorn"); return 0; }//绑定端口 if (listen(sock_service, 5) == -1) { perror("listen errorn"); return 0; }//监听端口 int addr_length = sizeof(struct sockaddr_in); sock_client = accept(sock_service, &addr_client, &addr_length); while (1) { if (sock_client == -1) { sock_client = accept(sock_service, &addr_client, &addr_length);//等待连接,并得到客户端信息 continue; } else { char buffer[1024]; int size = read(sock_client, buffer, 1024);//读取客户端发送的数据 if(size>0) { printf("message:"); write(1, buffer, size); sprintf(buffer, "recieved %d bytesn", size); write(sock_client, buffer, strlen(buffer)); } } } close(sock_client);} UDP通信 UDP通信服务流程 UDP客户服眼睛大的小海豚码 #include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <strings.h>#include <arpa/inet.h>#include <unistd.h>#include <linux/in.h>#include <memory.h>#define PORT 8888int main() { int s; struct sockaddr_in addr_service,addr_client; s = socket(AF_INET, SOCKdrdgb, 0); if (s == -1) { perror("socked errorn"); return 0; } addr_service.sin_family = AF_INET; addr_service.sin_port = htons(PORT); addr_service.sin_addr.s_addr = htonl(INADDR_ANY); bzero(&(addr_service.sin_zero), 8); char buffer[128]; int size=0; int length= sizeof(struct sockaddr); while(1){ size=read(0,buffer,128); if(size>0){ sendto(s,buffer,128,0,(struct sockaddr*)&addr_service,sizeof(struct sockaddr)); int n=recvfrom(s,buffer,128,0,(struct sockaddr*)&addr_client,&length); printf("client received:%s",buffer); } } close(s);} UDP服务器代码 #include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <strings.h>#include <arpa/inet.h>#include <unistd.h>#include <linux/in.h>#include <memory.h>#define PORT 8888int main() { int sock_service; struct sockaddr_in addr_service, addr_client; sock_service = socket(AF_INET, SOCKdrdgb, 0); if (sock_service == -1) { perror("socked errorn"); return 0; } addr_service.sin_family = AF_INET; addr_service.sin_port = htons(PORT); addr_service.sin_addr.s_addr = htonl(INADDR_ANY); bzero(&(addr_service.sin_zero), 8); if (bind(sock_service, (struct sockaddr *) &addr_service, sizeof(struct sockaddr)) == -1) { perror("bind errorn"); return 0; } int length= sizeof(struct sockaddr); while (1){ char buffer[128]; int n=recvfrom(sock_service,buffer,128,0,(struct sockaddr*)&addr_client,&length); printf("service received:%s",buffer); sendto(sock_service,buffer,n,0,(struct sockaddr*)&addr_client,sizeof(struct sockaddr)); } close(sock_service);}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。