admin 管理员组

文章数量: 1086019


2023年12月22日发(作者:shadowed插件)

给你两个简单示例参考下,先运行服务端,再运行客服端,可以实现两者之间的通信。

服务端:

#include

#include

using namespace std;

#pragma comment(lib,"ws2_")

void main()

{

WORD wVersionRequested;

WSADATA wsaData;

int err;

wVersionRequested = MAKEWORD( 2, 2 );

err = WSAStartup( wVersionRequested, &wsaData );

if ( err != 0 ) {

return;

}

if ( LOBYTE( on ) != 2 ||

HIBYTE( on ) != 2 ) {

WSACleanup( );

return;

}

SOCKET listenfd = socket(AF_INET,SOCK_STREAM,0);

if (listenfd == INVALID_SOCKET)

{

cout<<"socket failed with err code="<

return;

}

sockaddr_in servaddr;

memset(&servaddr,0,sizeof(sockaddr_in));

_family = AF_INET;

_port = htons(5555);

_addr.s_addr = htonl(INADDR_ANY);

// _addr.s_addr = inet_addr("127.0.0.1");

int opt = 1;

int ret = setsockopt(listenfd,SOL_SOCKET,SO_REUSEADDR,(const char*)&opt,sizeof(opt));

if (ret == SOCKET_ERROR)

{

cout<<"setsockopt failed with err code="<

return;

}

ret = bind(listenfd,(sockaddr*)&servaddr,sizeof(servaddr));

if (ret == SOCKET_ERROR)

{

cout<<"bind failed with err code="<

return;

}

ret = listen(listenfd,10);

if (ret == SOCKET_ERROR)

{

cout<<"listen failed with err code="<

return;

}

sockaddr_in peeraddr;

int len = sizeof(sockaddr_in);

// while (1)

// {

SOCKET connSocket = accept(listenfd,(sockaddr*)&peeraddr,&len);

if (connSocket == INVALID_SOCKET)

{

cout<<"accept failed with err code="<

return;

}

// 开辟一个线程

cout<<"peer

port=["<

send(connSocket,"welcome to by",strlen("welcome to by"),0);

char buf[1024];

while (1)

{

memset(buf,0,sizeof(buf));

recv(connSocket,buf,1024,0);

cout<

send(connSocket,buf,strlen(buf),0);

ip=["<

}

}

客户端:

#include

#include

using namespace std;

#pragma comment(lib,"ws2_")

void main()

{

WORD wVersionRequested;

WSADATA wsaData;

int err;

wVersionRequested = MAKEWORD( 2, 2 );

err = WSAStartup( wVersionRequested, &wsaData );

if ( err != 0 ) {

return;

}

if ( LOBYTE( on ) != 2 ||

HIBYTE( on ) != 2 ) {

WSACleanup( );

return;

}

SOCKET sock = socket(AF_INET,SOCK_STREAM,0);

if (sock == INVALID_SOCKET)

{

cout<<"socket failed with err code="<

return;

}

sockaddr_in servaddr;

memset(&servaddr,0,sizeof(sockaddr_in));

_family = AF_INET;

_port = htons(5555);

_addr.s_addr = inet_addr("127.0.0.1");

int ret = connect(sock,(sockaddr*)&servaddr,sizeof(servaddr));

if (ret == SOCKET_ERROR)

{

cout<<"connect failed with err code="<

return;

}

char recvbuf[1024] = {0};

recv(sock,recvbuf,1024,0);

cout<

char sendbuf[1024] = {0};

while (1)

{

memset(sendbuf,0,sizeof(sendbuf));

memset(recvbuf,0,sizeof(recvbuf));

cin>>sendbuf;

send(sock,sendbuf,strlen(sendbuf),0);

recv(sock,recvbuf,1024,0);

cout<

}

}


本文标签: 运行 客服 服务端 插件 线程