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< } }
版权声明:本文标题:C语言套接字编程实现通信简单示例 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1703246408a443921.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论