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小时内删除。
发表评论