服务端
#include<WinSock2.h>
#include <stdio.h>
#include <Windows.h>
#include <string>
#pragma comment(lib, "WS2_32.lib")
int main(int argc, char* argv[])
{
WSAData wsaData;
WORD sockVersion = MAKEWORD(2, 2);
::WSAStartup(sockVersion, &wsaData);
SOCKET serverSocket = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (INVALID_SOCKET == serverSocket)
{
printf("Failed Socket()\n");
WSACleanup();
return -1;
}
sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_port = htons(8888);
sin.sin_addr.S_un.S_addr = INADDR_ANY;
int BindFlag = ::bind(serverSocket, (LPSOCKADDR)&sin, sizeof(sin));
if (SOCKET_ERROR == BindFlag)
{
printf("BindError\n");
WSACleanup();
return -1;
}
int ListenFlag = ::listen(serverSocket, 2);
if (SOCKET_ERROR == ListenFlag)
{
printf("Listen Error\n");
WSACleanup();
return -1;
}
sockaddr_in RemoteAddr;
int nAddrLen = sizeof(RemoteAddr);
SOCKET CleintSocket = INVALID_SOCKET;
std::string ContextServer = "Hello I`am server";
while (TRUE)
{
CleintSocket = ::accept(serverSocket, (LPSOCKADDR)&RemoteAddr, &nAddrLen);
if (INVALID_SOCKET == CleintSocket)
{
printf(" accpet error");
continue;
}
//输出客户端消息
printf("收到链接,%s\t", inet_ntoa(RemoteAddr.sin_addr));
::send(CleintSocket, ContextServer.c_str(), ContextServer.length(), 0);
}
if (INVALID_SOCKET != CleintSocket)
{
closesocket(CleintSocket);
}
closesocket(serverSocket);
WSACleanup();
return 0;
}
客户端
#include<WinSock2.h>
#include <stdio.h>
#include <Windows.h>
#include <string>
#pragma comment(lib, "WS2_32.lib")
int main(int argc, char* argv[])
{
WSAData wsaData;
WORD sockVersion = MAKEWORD(2, 2);
::WSAStartup(sockVersion, &wsaData);
SOCKET ClientSocket = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (INVALID_SOCKET == ClientSocket)
{
printf("Failed Socket()\n");
WSACleanup();
return -1;
}
// sockaddr_in sin;
// sin.sin_family = AF_INET;
// sin.sin_port = htons(8888);
// sin.sin_addr.S_un.S_addr = INADDR_ANY;
// int BindFlag = ::bind(serverSocket, (LPSOCKADDR)&sin, sizeof(sin));
// if (SOCKET_ERROR == BindFlag)
// {
// printf("BindError\n");
// WSACleanup();
// return -1;
// }
//
// int ListenFlag = ::listen(serverSocket, 2);
// if (SOCKET_ERROR == ListenFlag)
// {
// printf("Listen Error\n");
// WSACleanup();
// return -1;
// }
sockaddr_in Server;
int nAddrLen = sizeof(Server);
Server.sin_family = AF_INET;
Server.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
Server.sin_port = htons(8888);
int ConnectFlag = ::connect(ClientSocket, (LPSOCKADDR)&Server, nAddrLen);
if (-1 == ConnectFlag)
{
printf("Connect Error\n");
WSACleanup();
return -1;
}
while(TRUE)
{
char buffer[256] = {0};
int nRecv = recv(ClientSocket, buffer, 256, 0);
if (nRecv > 0)
{
buffer[nRecv] = '\0';
printf("收到数据: %s\n", buffer);
}
Sleep(10);
}
if (INVALID_SOCKET != ClientSocket)
{
closesocket(ClientSocket);
}
WSACleanup();
return 0;
}