Winsock编程基础2(UDP流程)
发布时间:2020-12-14 04:20:25 所属栏目:大数据 来源:网络整理
导读:UDP用户数据报协议 服务器端 1 创建套接字(socket) 2 绑定IP地址和端口(bind) 3 收发数据(sendto,recvfrom) 4 关闭连接(closesocket) 客户端 1 创建套接字(socket) 2 收发数据(sendto,recvfrom) 3 关闭连接 (closesocket) int sendto( SOCKET s, // 用来发送
UDP用户数据报协议
服务器端
<1 创建套接字(socket)
<2 绑定IP地址和端口(bind)
<3 收发数据(sendto,recvfrom)
<4 关闭连接(closesocket)
客户端
<1 创建套接字(socket)
<2 收发数据(sendto,recvfrom)
<3 关闭连接(closesocket)
int sendto( SOCKET s,//用来发送数据的套接字 const char FAR *buf,//指向发送数据的缓冲区 int len,//要发送数据长度 int flags,//一般指定0 const struct sockaddr *to,//指向一个包含目标地址和端口号的sockaddr_in结构 int toLen //结构大小 ); int recvfrom(SOCKET s,char *FAR buf,int len,int flags,struct sockaddr FAR *from,int FAR* fromLen)
简单实例
?
服务器端
#include <iostream> #include <stdio.h> #include "InitSock.h" using namespace std; int main(void) { CInitSock initSock; //创建套接字 SOCKET s = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP); if (s == INVALID_SOCKET) { cout << "Failed socke()" << endl; return 0; } sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_port = htons(4567); addr.sin_addr.S_un.S_addr = INADDR_ANY; //绑定套接字到一个本地地址 if (bind(s,(LPSOCKADDR)&addr,sizeof(addr)) == SOCKET_ERROR) { cout << "Failed bind()" << endl; return 0; } //接收数据 char buf[1024]; sockaddr_in clientAddr; int nLen = sizeof(addr); while (TRUE) { int nRecv = recvfrom(s,buf,1024,0,(sockaddr*)&clientAddr,&nLen); if (nRecv > 0) { buf[nRecv] = ‘ |