visual studio c++2019 p2p编程实例
以下是一个简单的Visual Studio 2019中使用C++进行P2P编程的实例:
#include <iostream>
#include <WinSock2.h>
#pragma comment(lib, "ws2_32.lib")
#define SERVER_PORT 8000
#define MAX_BUFFER_SIZE 4096
int main()
{
    WSADATA wsaData;
    if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
    {
        std::cout << "Failed to initialize winsock" << std::endl;
        return -1;
    }
    // 创建套接字
    SOCKET serverSocket = socket(AF_INET, SOCK_STREAM, 0);
    if (serverSocket == INVALID_SOCKET)
    {
        std::cout << "Failed to create socket" << std::endl;
        WSACleanup();
        return -1;
    }
    // 设置服务器地址
    sockaddr_in serverAddr;
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_port = htons(SERVER_PORT);
    serverAddr.sin_addr.S_un.S_addr = INADDR_ANY;
    // 绑定套接字
    if (bind(serverSocket, (sockaddr*)&serverAddr, sizeof(serverAddr)) == SOCKET_ERROR)
    {
        std::cout << "Failed to bind socket" << std::endl;
        closesocket(serverSocket);
        WSACleanup();
        return -1;
    }
    // 监听连接
    if (listen(serverSocket, SOMAXCONN) == SOCKET_ERROR)
    {
        std::cout << "Failed to listen on socket" << std::endl;
        closesocket(serverSocket);
        WSACleanup();
        return -1;
    }
    std::cout << "Server started. Waiting for " << std::endl;
    while (true)
    {
        // 接受连接
        sockaddr_in clientAddr;
        int clientAddrLen = sizeof(clientAddr);
        SOCKET clientSocket = accept(serverSocket, (sockaddr*)&clientAddr, &clientAddrLen);
        if (clientSocket == INVALID_SOCKET)
        {
            std::cout << "Failed to accept client connection" << std::endl;
            closesocket(serverSocket);
            WSACleanup();
            return -1;
        }
        std::cout << "Client connected" << std::endl;
        char buffer[MAX_BUFFER_SIZE];
        memset(buffer, 0, MAX_BUFFER_SIZE);
        int bytesReceived = recv(clientSocket, buffer, MAX_BUFFER_SIZE, 0);
        if (bytesReceived > 0)
        {
            std::cout << "Received data from client: " << buffer << std::endl;
        }
        std::string response = "Hello, client!";
        int bytesSent = send(clientSocket, response.c_str(), response.length() + 1, 0);
        if (bytesSent == SOCKET_ERROR)
socket编程聊天室基本流程
        {
            std::cout << "Failed to send data to client" << std::endl;
        }
        closesocket(clientSocket);
        std::cout << "Client disconnected" << std::endl;
    }
    closesocket(serverSocket);
    WSACleanup();
    return 0;
}
这个例子展示了一个简单的P2P服务器,它使用TCP套接字创建一个服务器并监听客户端连接。当客户端连接到服务器时,服务器接受连接并接收来自客户端的数据,并向客户端发送响应。
请注意,P2P编程涉及更复杂的通信和协议,这只是一个非常基本的示例。实际的P2P编程涉及到网络发现、路由、连接管理和数据传输等更复杂的任务。对于更全面的P2P编程,您可能需要进一步研究和了解相关的网络编程和P2P协议。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。