window下c语言c s通信,c++ Windows Socket实现最简单的C/S网络通信(TCP)

1.服务器端代码:

#include

#include

#pragma comment(lib, "ws2_32.lib")

#define CONNECT_NUM_MAX 10

using namespace std;

int main()

{

//加载套接字库

WSADATA wsaData;

int iRet = 0;

iRet = WSAStartup(MAKEWORD(2, 2), &wsaData);

if (iRet != 0)

{

cout << "WSAStartup(MAKEWORD(2, 2), &wsaData) execute failed!" << endl;;

return -1;

}

if (2 != LOBYTE(wsaData.wVersion) || 2 != HIBYTE(wsaData.wVersion))

{

WSACleanup();

cout << "WSADATA version is not correct!" << endl;

return -1;

}

//创建套接字

SOCKET serverSocket = socket(AF_INET, SOCK_STREAM, 0);

if (serverSocket == INVALID_SOCKET)

{

cout << "serverSocket = socket(AF_INET, SOCK_STREAM, 0) execute failed!" << endl;

return -1;

}

//初始化服务器地址族变量

SOCKADDR_IN addrSrv;

addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);

addrSrv.sin_family = AF_INET;

addrSrv.sin_port = htons(6000);

//绑定

iRet = bind(serverSocket, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));

if (iRet == SOCKET_ERROR)

{

cout << "bind(serverSocket, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR)) execute failed!" << endl;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是基于TCP协议的socket通信的示例代码,使用标准C语言Windows环境下编写: ```c #include <stdio.h> #include <winsock2.h> #pragma comment(lib, "ws2_32.lib") int main() { // 初始化Winsock库 WSADATA wsaData; if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { printf("WSAStartup failed\n"); return 1; } // 创建socket SOCKET server_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (server_socket == INVALID_SOCKET) { printf("socket creation failed\n"); return 1; } // 绑定socket到本地IP和端口 struct sockaddr_in server_addr = {0}; server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = htonl(INADDR_ANY); server_addr.sin_port = htons(12345); if (bind(server_socket, (struct sockaddr*)&server_addr, sizeof(server_addr)) == SOCKET_ERROR) { printf("socket binding failed\n"); closesocket(server_socket); return 1; } // 监听端口 if (listen(server_socket, SOMAXCONN) == SOCKET_ERROR) { printf("socket listening failed\n"); closesocket(server_socket); return 1; } printf("Waiting for incoming connections...\n"); // 接受客户端连接请求 struct sockaddr_in client_addr = {0}; int client_addr_len = sizeof(client_addr); SOCKET client_socket = accept(server_socket, (struct sockaddr*)&client_addr, &client_addr_len); if (client_socket == INVALID_SOCKET) { printf("client connection failed\n"); closesocket(server_socket); return 1; } printf("Client connected: %s:%d\n", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port)); // 接收客户端的消息 char buffer[1024]; int recv_size; while ((recv_size = recv(client_socket, buffer, sizeof(buffer), 0)) > 0) { buffer[recv_size] = '\0'; printf("Received message: %s\n", buffer); // 发送回复消息 if (send(client_socket, "Hello from server", 18, 0) == SOCKET_ERROR) { printf("send failed\n"); closesocket(client_socket); closesocket(server_socket); return 1; } } if (recv_size == SOCKET_ERROR) { printf("recv failed\n"); } // 关闭socket closesocket(client_socket); closesocket(server_socket); // 卸载Winsock库 WSACleanup(); return 0; } ``` 此示例代码创建了一个TCP服务器,绑定在本地IP地址和端口12345上。它使用`socket()`函数创建一个socket,然后使用`bind()`函数将其绑定到本地地址和端口上。接下来,使用`listen()`函数将socket设置为监听模式,等待客户端的连接请求。一旦有客户端连接,使用`accept()`函数接受它。然后,使用`recv()`函数接收客户端发送的消息,并使用`send()`函数向客户端发送回复消息。最后,关闭客户端和服务器socket,并卸载Winsock库。 需要注意的是,此示例代码仅处理单个客户端连接。如果需要处理多个客户端连接,需要使用多线程或多进程来处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值