服务端:
#include <iostream>
#include <winsock2.h>
#pragma comment(lib, "ws2_32")
int main()
{
using namespace std;
WORD wdVersionRequired;
WSADATA wsaData;
int err;
wdVersionRequired = MAKEWORD(2, 2);
err = WSAStartup(wdVersionRequired, &wsaData);
//注意函数返回值,0表示正常
if (0 != err)
{
return 0;
}
SOCKET s = socket(AF_INET, SOCK_STREAM, 0);
if (INVALID_SOCKET == s)
{
cout << "failed socket" << endl;
return 0;
}
sockaddr_in saServer;
saServer.sin_family = AF_INET;
saServer.sin_addr.S_un.S_addr = INADDR_ANY;
saServer.sin_port = htons(4567);
err = bind(s, (const sockaddr *)&saServer, sizeof(sockaddr));
if (0 != err)
{
cout << "failed bind" << endl;
return 0;
}
err = listen(s, 10);
if (0 != err)
{
cout << "failed listen" << endl;
return 0;
}
char buf[16];
sockaddr sa;
int salen = sizeof(sockaddr);
SOCKET sClient;
while(true)
{
sClient = accept(s, &sa, &salen);
err = recv(sClient, buf, sizeof(buf), 0);
if (err != 0 && err != SOCKET_ERROR)
{
send(sClient, buf, sizeof(buf), 0);
cout << buf << endl;
}
}
WSACleanup();//释放
return 1;
}
客户端:
#include <windows.h>
#pragma comment(lib, "ws2_32")
#include <iostream>
using namespace std;
int main()
{
WORD wdVersionRequired;
WSADATA wsaData;
wdVersionRequired = MAKEWORD(2, 2);
WSAStartup(wdVersionRequired, &wsaData);
SOCKET s = socket(AF_INET, SOCK_STREAM, 0);
if (SOCKET_ERROR == s)
{
return 0;
}
sockaddr_in saServer;
memset(&saServer, 0, sizeof(saServer));
saServer.sin_family = AF_INET;
saServer.sin_addr.S_un.S_addr = inet_addr("222.200.42.5");
saServer.sin_port = htons(4567);
connect(s, (const sockaddr*)&saServer, sizeof(sockaddr));
char buf[16] = "heheheheheheheh";
send(s, buf, sizeof(buf), 0);
recv(s, buf, sizeof(buf), 0);
cout << buf << endl;
//WSACleanup();
int a;
cin >> a;
return 1;
}