首先从最简单的C/S模型开始写:
如下是客户端代码
#include <iostream>
#include <winsock2.h>
#pragma comment (lib,"WS2_32.lib")
using namespace std;
int main()
{
//加载套接字库
WSADATA wsadata;
WSAStartup(MAKEWORD(2, 2), &wsadata);
//创建套接字
SOCKET clientsocket;
clientsocket = socket(AF_INET, SOCK_STREAM, 0);
//初始化客户端地址族变量
SOCKADDR_IN addrSrv;
addrSrv.sin_family = AF_INET;
addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
addrSrv.sin_port = htons(8000);
//绑定
connect(clientsocket, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));
//发送数据
while (true)
{
char sendBuff[255];
cin >> sendBuff;
send(clientsocket, sendBuff, 255, 0);
}
}
如下是服务器代码
#include <iostream>
#include <winsock2.h>
#pragma comment (lib,"WS2_32.lib")
using namespace std;
int main()
{
//加载套接字库
WSADATA wsadata;
WSAStartup(MAKEWORD(2, 2), &wsadata);
//创建套接字
SOCKET serversocket;
serversocket = socket(AF_INET, SOCK_STREAM, 0);
//初始化服务器地址族变量
SOCKADDR_IN addrSrv;
addrSrv.sin_family = AF_INET;
addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
addrSrv.sin_port = htons(8000);
//绑定
bind(serversocket, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));
//监听
listen(serversocket, 10);
//接收连接
SOCKADDR_IN addrClient;
int len = sizeof(SOCKADDR);
SOCKET connectSocket=accept(serversocket, (SOCKADDR*)&addrClient, &len);
//接收数据
while (true)
{
char recvBuff[255];
recv(connectSocket, recvBuff, 255, 0);
cout << recvBuff << endl;
}
}