客户端代码如下
1 先初始化socket (WSASatrtup)
2 创建 scoket
3 连接
4 收发信息
5 关闭 socket
#include <Windows.h>
#include <conio.h>
#include <Winsock.h>
#include <iostream>
using namespace std;
//socket 库
#pragma comment(lib, "Ws2_32.lib")
void StartUpWindowsSocket()
{
WSADATA wsData = {0};
WSAStartup(MAKEWORD(2, 2), &wsData);
}
void TCPClientSocket()
{
//创建socket
SOCKET sk = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
if (INVALID_SOCKET == sk)
{
return;
}
//连接
struct sockaddr_in addr = {0};
addr.sin_family = AF_INET;
addr.sin_port = htons(2222);
addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
int a = connect(sk, (sockaddr *)&addr, sizeof(addr));
// 数据收发
char szText[100] = "hello Server";
send(sk, szText, sizeof(szText), 0);
recv(sk, szText, 100, 0);
cout << "发送的数据: " << szText << endl;
getch();
// 关闭socket
closesocket(sk);
}
int main()
{
StartUpWindowsSocket();
TCPClientSocket();
return 0;
}
服务端
1 初始化 socket
2 创建scocket
3 绑定
4 监听
5 接受连接
6 收发信息
7 关闭
#include <Windows.h>
#include <conio.h>
#include <iostream>
using namespace std;
#include <Winsock.h>
//socket 库
#pragma comment(lib, "Ws2_32.lib")
void StartUpWindowsSocket()
{
WSADATA wsData = {0};
WSAStartup(MAKEWORD(2, 2), &wsData);
}
void TCPServer()
{
//创建socket
SOCKET sk = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
if (INVALID_SOCKET == sk)
{
return;
}
//绑定
struct sockaddr_in ssck = {0};
ssck.sin_family = AF_INET;
ssck.sin_port = htons(2222);
ssck.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
bind(sk, (sockaddr *)&ssck, sizeof(ssck));
//监听
listen(sk, SOMAXCONN);
//接收
cout << "等待客户端连接" << endl;
struct sockaddr_in SocketAddClient = {0};
int nLen = sizeof(SocketAddClient);
SOCKET SocketClient = accept(sk, (sockaddr*)&SocketAddClient,&nLen);
cout << "客户端已连接" << endl;
if (SocketClient == INVALID_SOCKET)
{
int a = 10;
}
//接受数据
char szText[100] ={0};
recv(SocketClient,szText, 100, 0);
cout << "收到的数据: " <<szText << endl;
send(SocketClient, szText, sizeof(szText), 0);
getch();
closesocket(sk);
closesocket(SocketClient);
}
int main()
{
StartUpWindowsSocket();
TCPServer();
return 0;
}