网络通信_UDP客户端以及服务器
来源:互联网 发布:淘宝客服提成2个点 编辑:程序博客网 时间:2024/06/13 11:06
UDP协议
UDP位于IP层之上,每个UDP报文分为UDP报头和UDP数据两个部分;报头由四个16位长字段组成,如下图所示:
UDP客户端与服务器通信流程图
具体代码
客户端:
#include<stdio.h>#include<winsock2.h>#pragma comment(lib,"ws2_32.lib")int main(){WSADATA wsa;SOCKET serversoc;SOCKADDR_IN serveraddr;SOCKADDR_IN peeraddr;int peer_len=sizeof(peeraddr);char Recv_buf[64];//char *Server_IP="127.0.0.1";char *Send_data="Hello,server!";int Send_len=strlen(Send_data);int time_out=2000; //接收超时int result; WSAStartup(WINSOCK_VERSION,&wsa);//初始化WS2_32.DLL //命名协议,IP,端口 serveraddr.sin_family = AF_INET;serveraddr.sin_port = htons(13);serveraddr.sin_addr.s_addr = inet_addr("127.0.0.1");if(serveraddr.sin_addr.s_addr==INADDR_NONE){printf("不可用地址!\n");return -1;} //创建套接字serversoc = socket(AF_INET,SOCK_DGRAM,0); result = setsockopt(serversoc,SOL_SOCKET,SO_RCVTIMEO,(char*)&time_out,sizeof(time_out)); for(int i=0;i<3;i++){ //发送数据result = sendto(serversoc,Send_data,Send_len,0,(SOCKADDR *)&serveraddr,sizeof(serveraddr));//接收数据result = recvfrom(serversoc,Recv_buf,64,0,(SOCKADDR *)&peeraddr,&peer_len);if(result >= 0){Recv_buf[result]= 0;printf("接收数据为: %s \n",Recv_buf);}} closesocket(serversoc);WSACleanup(); return 0;}
服务端:
#include<stdio.h>#include<winsock2.h>#include<time.h>#pragma comment(lib,"ws2_32.lib")int main(){WSADATA wsa;WSAStartup(WINSOCK_VERSION,&wsa);//初始化WS2_32.DLLSOCKET serversoc;SOCKET clientsoc;SOCKADDR_IN serveraddr;SOCKADDR_IN clientaddr;int client_len = sizeof(clientaddr);int server_len = sizeof(serveraddr);char *Send_data;int Send_len;char Recv_buf[64];int result;time_t nowtime;//命名协议,IP,端口 serveraddr.sin_family = AF_INET;serveraddr.sin_port = htons(13);serveraddr.sin_addr.s_addr = INADDR_ANY;//创建socketserversoc = socket(AF_INET,SOCK_DGRAM,0);//绑定socketresult=bind(serversoc, (SOCKADDR *)&serveraddr, server_len);if(result==SOCKET_ERROR){printf("套接字绑定失败!\n");closesocket(serversoc);return -1;}printf("Server is running.....\n");clientsoc = socket(AF_INET,SOCK_DGRAM,0);while(1){ //接收数据result = recvfrom(serversoc,Recv_buf,64,0,(SOCKADDR *)&clientaddr,&client_len);if(result >= 0){Recv_buf[result]= 0;printf("接收数据为: %s \n",Recv_buf); //发送数据nowtime=time(0);Send_data=ctime(&nowtime);Send_len=strlen(Send_data); result = sendto(clientsoc,Send_data,Send_len,0,(SOCKADDR *)&clientaddr,sizeof(clientaddr));printf("Server is running.....\n");}}closesocket(serversoc);WSACleanup();return 0;}
参考文章:
http://blog.csdn.net/lovecodeless/article/details/25388291
http://blog.csdn.net/mao834099514/article/details/52763490?locationNum=2&fps=1
http://blog.csdn.net/lovecodeless/article/details/25388291
http://blog.csdn.net/mao834099514/article/details/52763490?locationNum=2&fps=1
0 0
- 网络通信_UDP客户端以及服务器
- 控制台_udp服务器_客户端
- 客户端服务器结构网络通信
- TCP服务器客户端网络通信
- Java实现服务器与客户端网络通信
- 网络通信_TCP客户端与服务器
- 12_UDP通信
- 服务器与客户端之间通信格式以及协议字
- java版客户端与服务器的socket通信以及上传下载
- UDP数据读写以及服务器客户端的通信
- 网络通信【 二】关于服务器和客户端编程
- iOS 中客户端和服务器的 Web Service 网络通信
- Linux环境下服务器和客户端的网络通信
- Java网络编程之服务器与客户端通信
- java socket tcpip多线程网络通信服务器客户端
- Java网络编程之服务器与客户端通信
- Android客户端与云服务器进行网络通信
- C++ 服务器与客户端通信 (网络编程)
- Oracle数据库挂了后weblogic的日志
- MyEclipse 8.5反编译插件jad安装方法
- VS2005 MFC C/C++ 操作excel【网上找了好多列子,都不合适,自己总结一下】
- iOS与网页JS交互
- 怎么让adb识别修改了VID和PID的手机(移动设备)
- 网络通信_UDP客户端以及服务器
- 调用JNI函数
- 在局域网内用自己的机子当服务器让外网访问测试回调
- WebStorm开发工具设置React Native代码智能提醒
- unity3d随笔-5
- SQL Server,MySQL,Oracle三者的区别
- 如何成为高级程序员
- Windows上传文件到centos7服务器
- 【Algothrim】Ant Teams