服务器:
1.创建套接字
2.绑定
3.listen监听
4.accept创建接收套接字
5.收发消息
6.close
客户端:
1.创建套接字
2.bind绑定
3.connect连接
4.收发消息
5.close
服务器端代码:
#include <iostream>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
int main()
{
WSADATA ws;
WSAStartup(0x0202, &ws);
SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);
if (INVALID_SOCKET == sock)
{
cout << "出错:" << WSAGetLastError() << endl;
return -1;
}
sockaddr_in sa;
sa.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
sa.sin_family = AF_INET;
sa.sin_port = htons(6666);
int ret = bind(sock, (sockaddr*)&sa, sizeof(sa));
if (ret < 0)
{
cout << "bind error" << endl;
return -1;
}
ret = listen(sock, 10);
if (ret < 0)
{
cout << "listen error" << endl;
}
cout << "listen..." << endl;
SOCKET fd = accept(sock, NULL, NULL);
char buf[100] = { 0 };
while (true)
{
recv(fd, buf, sizeof(buf), 0);
cout << "b:" << buf << endl;
memset(buf, 0, sizeof(buf));
cout << "a:";
cin >> buf;
send(fd, buf, sizeof(buf), 0);
memset(buf, 0, sizeof(buf));
}
closesocket(fd);
closesocket(sock);
return 0;
}
客户端代码:
#include <iostream>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
int main()
{
WSADATA ws;
WSAStartup(0x0202, &ws);
SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);
if (INVALID_SOCKET == sock)
{
cout << "出错:" << WSAGetLastError() << endl;
return -1;
}
sockaddr_in sa,sb;
sa.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
sa.sin_family = AF_INET;
sa.sin_port = htons(9999);
sb.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
sb.sin_family = AF_INET;
sb.sin_port = htons(6666);
int ret = bind(sock, (sockaddr*)&sa, sizeof(sa));
if (ret < 0)
{
cout << "bind error" << endl;
return -1;
}
ret = connect(sock, (sockaddr*)&sb, sizeof(sb));
if (ret < 0)
{
cout << "connect error" << endl;
}
char buf[100] = { 0 };
while (true)
{
cout << "b:";
cin >> buf;
send(sock, buf, sizeof(buf), 0);
memset(buf, 0, sizeof(buf));
recv(sock, buf, sizeof(buf), 0);
cout << "a:" << buf << endl;
memset(buf, 0, sizeof(buf));
}
closesocket(sock);
return 0;
}