UDP用户数据报协议
服务器端
<1 创建套接字(socket)
<2 绑定IP地址和端口(bind)
<3 收发数据(sendto,recvfrom)
<4 关闭连接(closesocket)
客户端
<1 创建套接字(socket)
<2 收发数据(sendto,recvfrom)
<3 关闭连接(closesocket)
简单实例
服务器端
#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] = ‘\0‘; cout << "接收到数据" << inet_ntoa(clientAddr.sin_addr) << ": " << buf << endl; } } //关闭套接字 closesocket(s); return 0; }
客户端
#include <iostream> #include <stdio.h> #include "InitSock.h" using namespace std; int main(void) { CInitSock initSock; //创建套接字 SOCKET s = socket(AF_INET,IPPROTO_UDP); if (s == INVALID_SOCKET) { cout << "Failed socke()" << endl; return 0; } //创建套接字之后如果首先sendto可以不绑定 //若首先recvfrom则需要绑定 //填写远程地址信息 sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_port = htons(4567); addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); //发送数据 char szText[] = "UDP Server Demo\r\n"; sendto(s,szText,strlen(szText),0,(sockaddr*)&addr,sizeof(addr)); closesocket(s); cout << "数据已发送" << endl; getchar(); return 0; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。