1.加载套接字库c++
2.建立套接字服务器
3.链接套接字网络
4.设置可监听的客户端的最大数量socket
5.发送数据给客户端函数
6.接收客户端传来的数据ui
7.关闭链接spa
// TCPServer.cpp : 定义控制台应用程序的入口点。
// TCP通讯服务器端代码
#include "stdafx.h"
using namespace std;
bool SetTcpServer() {
//1.加载套接字库
WORD w_version_req = MAKEWORD(2,2); //初始化WinSock版本号
WSADATA wsaData;
int flag_InitWSA = WSAStartup(w_version_req,&wsaData); //具体参数含义参考:https://blog.csdn.net/clemontine/article/details/53141041
//flag_InitWSA 不为0则说明初始化失败
if (flag_InitWSA != 0)
{
cout << "初始化WSAStartup失败!"<<endl;
return false;
}
//wsaData为空指针,说明初始化失败
if (&wsaData == nullptr)
{
cout << "初始化失败,&wsaData为空指针!" << endl;
return false;
}
//2.建立套接字
SOCKET socketServer = socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN socketAddr;
socketAddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY); //须要接收任意的IP地址
socketAddr.sin_family = AF_INET;
socketAddr.sin_port = htons(6000);//端口号
//3.链接套接字
bind(socketServer,(SOCKADDR*)&socketAddr,sizeof(SOCKADDR));
//4.设置监听客户端数量
listen(socketServer,5);
cout << "启动监听" << endl;
SOCKADDR_IN sockclient;
int len=sizeof(SOCKADDR);
SOCKET sockCon=accept(socketServer,(SOCKADDR*)&sockclient,&len);//建立连接套接字
//5.发送数据到客户端
const char* sendBuf = "hey,在吗?";
send(sockCon,sendBuf,strlen(sendBuf)+1,0);
//6.接收客户端发来的消息
char recvBuf[250];
recv(sockCon,recvBuf,250,0);//发送\接收函数
cout <<"收到的客户端发来的信息为:" << recvBuf << endl;
//7.关闭服务器
closesocket(sockCon);//关闭套接字
WSACleanup();
return true;
}
int _tmain(int argc, _TCHAR* argv[])
{
SetTcpServer();
cout << "服务器关闭!" << endl;
int mm ;
cin >> mm;
return 0;
}
复制代码
1.加载套接字库.net
2.建立套接字指针
3.链接套接字code
4.发送数据到服务器
5.关闭套接字
// TCPClient.cpp : 定义控制台应用程序的入口点。
// TCP网络通讯客户端代码
#include "stdafx.h"
using namespace std;
bool SetTcpClient() {
//1.加载套接字库
WORD w_version_req = MAKEWORD(2,2); //初始化WinSock版本号
WSADATA wsaData;
int flag_InitWSA = WSAStartup(w_version_req,&wsaData); //具体参数含义参考:https://blog.csdn.net/clemontine/article/details/53141041
//flag_InitWSA 不为0则说明初始化失败
if (flag_InitWSA != 0)
{
cout << "初始化WSAStartup失败!"<<endl;
return false;
}
//wsaData为空指针,说明初始化失败
if (&wsaData == nullptr)
{
cout << "初始化失败,&wsaData为空指针!" << endl;
return false;
}
//2.建立套接字
SOCKET socketClient = socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN socketAddr;
socketAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); //须要接收的IP地址
socketAddr.sin_family = AF_INET;
socketAddr.sin_port = htons(6000);//端口号
//3.链接套接字
connect(socketClient,(SOCKADDR*)&socketAddr,sizeof(SOCKADDR));
//4.发送数据到服务器
char receiveBuf[250];
recv(socketClient,receiveBuf,250,0);//接收服务器的消息
cout <<"服务端发来消息:" <<receiveBuf << endl;
const char* sendBuf = "我今天还能够,天气不错!";
send(socketClient,sendBuf,strlen(sendBuf)+1,0); //+1是由于要包含\n字符 发送给服务器消息
//5.关闭套接字
closesocket(socketClient);
WSACleanup();
return true;
}
int _tmain(int argc, _TCHAR* argv[])
{
//启动客户端
SetTcpClient();
cout << "客户端关闭" << endl;
int msg_stop;
cin >> msg_stop;
return 0;
}
复制代码
启动客户端和服务器
运行结果:
说明TCP 通讯成功!