简单的应答交互客户端
#include<WinSock2.h>
#include<stdio.h>
#include<iostream>
#include<string>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
int main(void)
{
WORD wdVersion = MAKEWORD(2, 2);
WSADATA wdScokMsg;
int nRes = WSAStartup(wdVersion, &wdScokMsg);
if (0 != nRes)
{
switch (nRes)
{
case WSASYSNOTREADY:
printf("重启计算机!");
break;
case WSAEINPROGRESS:
printf("更新网络库!");
break;
}
return 0;
}
if (2 != HIBYTE(wdScokMsg.wVersion) || LOBYTE(wdScokMsg.wVersion) != 2)
{
WSACleanup();
return 0;
}
SOCKET socketServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (INVALID_SOCKET == socketServer)
{
int a = WSAGetLastError();
WSACleanup();
return 0;
}
struct sockaddr_in serverMsg;
serverMsg.sin_family = AF_INET;
serverMsg.sin_port = htons(12345);
serverMsg.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
if (connect(socketServer, (struct sockaddr*) & serverMsg, sizeof(serverMsg)))
{
int a = WSAGetLastError();
closesocket(socketServer);
WSACleanup();
return 0;
}
while (true)
{
char buf[1500] = { 0 };
scanf("%s", &buf);
if (SOCKET_ERROR == send(socketServer, buf, strlen(buf), 0))
{
int a = WSAGetLastError();
closesocket(socketServer);
WSACleanup();
return 0;
}
int res1 = recv(socketServer, buf, 1499, 0);
if (0 == res1)
{
printf("链接中断,服务器已跑路!!!\n");
}
else if (SOCKET_ERROR == res1)
{
printf("出错了!");
}
else
{
printf("%d, %s\n", res1, buf);
}
}
closesocket(socketServer);
WSACleanup();
return 0;
}
ps: 可以和之前的服务器端实现简单的通信交互