Socket (二) 简单的代码实现
SocktServer.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | #include "stdafx.h" #pragma comment(lib,"ws2_32.lib") #include <Winsock2.h> int _tmain( int argc, _TCHAR* argv[]) { WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) { return 0; } if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 ) { WSACleanup( ); return 0; } SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(8080); bind(sockSrv,(SOCKADDR*)&addrSrv, sizeof (SOCKADDR)); listen(sockSrv,5); SOCKADDR_IN addrClient; int len= sizeof (SOCKADDR); while (1) { printf ( "in while\n" ); SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len); //服务端会在此一直等到客户端连接,只有客户端连接成功后,才会执行后续语句 printf ( "have a client connecting\n" ); char sendBuf[50]; sprintf (sendBuf, "Welcome %s " ,inet_ntoa(addrClient.sin_addr)); send(sockConn,sendBuf, strlen (sendBuf)+1,0); char recvBuf[50]; for ( int j = 0; j < 50; j++) { recvBuf[j] = NULL; } recv(sockConn,recvBuf,50,0); printf ( "%s\n" ,recvBuf); closesocket(sockConn); } return 0; } |
SocktClient.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | #include "stdafx.h" #pragma comment(lib,"ws2_32.lib") #include <Winsock2.h> int _tmain( int argc, _TCHAR* argv[]) { WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) { return 0; } if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 ) { WSACleanup( ); return 0; } SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=inet_addr( "192.168.0.127" ); addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(8080); connect(sockClient,(SOCKADDR*)&addrSrv, sizeof (SOCKADDR)); send(sockClient, "00000" , strlen ( "11111 " )+1,0); char recvBuf[50]; recv(sockClient,recvBuf,50,0); printf ( "%s\n" ,recvBuf); closesocket(sockClient); WSACleanup(); return 0; } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步