一个简单的客户端服务端实现
client.cpp
#include <stdio.h>
#include <stdlib.h>
#include <WinSock2.h>
#pragma comment (lib, "ws2_32.lib") // 加载ws32_32.dll
int main()
{
// 初始化DLL
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2),&wsaData);
// 创建套接字
SOCKET sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
// 向服务器发起请求
struct sockaddr_in sockAddr;
memset(&sockAddr, 0, sizeof(sockAddr)); // 每个字节都用0填充
sockAddr.sin_family = PF_INET;
sockAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
sockAddr.sin_port = htons(1234);
connect(sock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR));
// 接收服务器传回的数据
char szBuffer[MAXBYTE] = {0};
recv(sock,szBuffer,MAXBYTE,NULL);
while (strcmpi(szBuffer,"exit()") != 0)
{
if(recv(sock,szBuffer,MAXBYTE,NULL) < 0)
{
printf("客户端断开链接~\n");
return 0;
}
// 输出接收到的数据
printf("Message form server:%s\n", szBuffer);
}
// 关闭套接字
closesocket(sock);
// 终止使用 DLL
WSACleanup();
return 0;
}
server.cpp
#include <iostream>
#include <WinSock2.h>
#include <string>
#pragma comment (lib,"ws2_32.lib") // 加载 ws32_32.dll
using namespace std;
int main()
{
// 初始化 DLL
WSADATA wsaData;
WSAStartup( MAKEWORD(2,2), &wsaData);
// 创建套接字
SOCKET servSock = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
// 绑定套接字
struct sockaddr_in sockAddr;
memset (&sockAddr, 0, sizeof(sockAddr)); // 每个套接字都用0填充
sockAddr.sin_family = PF_INET; // 使用IPv4地址
sockAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
sockAddr.sin_port = htons(1234); // 端口
bind(servSock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR));
// 进入监听状态
listen(servSock,20);
// 接收客户端请求
SOCKADDR clntAddr;
int nSize = sizeof(SOCKADDR);
SOCKET clntSock = accept(servSock, (SOCKADDR*)&clntAddr, &nSize);
// 向客户端发送数据
char *str = new char[100];
gets(str);
send(clntSock, str, strlen(str)+sizeof(char),NULL);
while (strcmpi(str,"exit()") != 0)
{
gets(str);
send(clntSock, str, strlen(str)+sizeof(char),NULL);
}
// 关闭套接字
closesocket(clntSock);
closesocket(servSock);
return 0;
}
本文来自博客园,作者:StimuMing,转载请注明原文链接:https://www.cnblogs.com/fole-del/p/15064737.html