其实是非常简单的。
#include
#include
using namespace std;
#pragma comment(lib, "WS2_32.lib")
int main() {
WSADATA data; // 定义结构体变量
WORD w = MAKEWORD(2, 0); // 定义套接字版本
::WSAStartup(w, &data); // 初始化套接字库
char sztext[] = "Welcome\n"; // 创建字符串
SOCKET s; // 定义套接字句柄
s = ::socket(AF_INET, SOCK_DGRAM, 0); // 定义套接字类型
sockaddr_in addr, addr2; // 创建套接字地址类型
int n = sizeof(sztext); // 地址结构体变量的大小
char buff[10] = { 0 }; // 接受数据缓冲区域
addr.sin_family = AF_INET;
addr.sin_port = htons(75); // 设置ip地址变量端口
addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");// 设置ip地址
::bind(s, (sockaddr*)&addr, sizeof(addr)); // 绑定对应的地址跟端口号
cout << "UDP Server is Working!\n";
while (1) {
if (::recvfrom(s, buff, 10, 0, (sockaddr*)&addr2, &n) != 0) {//会在这进行阻塞直到收到消息。
cout << inet_ntoa(addr2.sin_addr) << " have linked!\n";
cout << "The message is " << buff << endl;
::sendto(s, sztext, sizeof(sztext), 0, (sockaddr*)&addr2, n);
break;
}
}
::closesocket(s);
::WSACleanup();
system("pause");
return 0;
}