service端
// Service.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
using namespace std;
#include <WinSock2.h>
int main()
{
WSADATA wd;
if (0 != WSAStartup(MAKEWORD(2, 2), &wd))
{
WSACleanup();
}
SOCKET sockListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
SOCKADDR_IN addrListen;
addrListen.sin_family = AF_INET;
addrListen.sin_addr.s_addr = inet_addr("0.0.0.0");
addrListen.sin_port = htons(2021);
/*addrListen.sin_addr.s_addr = inet_addr("196.168.0.14");
addrListen.sin_port = htons(1025);*/
if (SOCKET_ERROR == bind(sockListen, (sockaddr *)&addrListen, sizeof(addrListen)))
{
int nErr = WSAGetLastError();
closesocket(sockListen);
WSACleanup();
return -1;
}
if (SOCKET_ERROR == listen(sockListen, 5))
{
int nErr = WSAGetLastError();
closesocket(sockListen);
WSACleanup();
}
SOCKET sockClient = accept(sockListen, NULL, NULL);
char szBuf[255] = "";
int nRes = 0;
while (1)
{
nRes = recv(sockClient, szBuf, 255, 0);
if (SOCKET_ERROR == nRes)
{
int nErr = WSAGetLastError();
break;
}
cout << "client:" << szBuf << endl;
if (0 == strcmp(szBuf, "exit"))
{
break;
}
cin >> szBuf;
nRes = send(sockClient, szBuf, strlen(szBuf) + 1, 0);
if (SOCKET_ERROR == nRes)
{
int nErr = WSAGetLastError();
break;
}
}
closesocket(sockClient);
WSACleanup();
return 0;
}
client端
// Client.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
using namespace std;
#include <WinSock2.h>
int main()
{
WSADATA wd;
if (0 != WSAStartup(MAKEWORD(2, 2), &wd))
{
WSACleanup();
}
SOCKET sockLink = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
SOCKADDR_IN addrListen;
addrListen.sin_family = AF_INET;
addrListen.sin_addr.s_addr = inet_addr("127.0.0.1");
addrListen.sin_port = htons(2021);
/*addrListen.sin_addr.s_addr = inet_addr("196.168.0.14");
addrListen.sin_port = htons(1025);*/
if (SOCKET_ERROR == connect(sockLink, (sockaddr*)&addrListen, sizeof(addrListen)))
{
int nErr = WSAGetLastError();
if (nErr == WSAEACCES)
{
cout << "error" << endl;
}
closesocket(sockLink);
WSACleanup();
return -1;
}
char szBuf[255] = "";
int nRes = 0;
while (1)
{
cin >> szBuf;
nRes = send(sockLink, szBuf, strlen(szBuf) + 1, 0);
if (SOCKET_ERROR == nRes)
{
int nErr = WSAGetLastError();
break;
}
nRes = recv(sockLink, szBuf, 255, 0);
if (SOCKET_ERROR == nRes)
{
int nErr = WSAGetLastError();
break;
}
cout << "service:" << szBuf << endl;
}
closesocket(sockLink);
WSACleanup();
return 0;
}