VS在windows进行网络开发UDP(一)

下面代码可以直接运行(需要在属性中更改C++的SDL检查,关掉就好了)

其实是非常简单的。

代码如下:

#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;
}

你可能感兴趣的:(C++,网络编程)