这里讲述TCP网络应用程序C/S模式下的 Client 客户端的例子。
在visual C++ 创建一个 Win32 控制台应用程序——空项目
然后添加文件 …代码如下:
如果对变量不理解的,参考该文章:http://blog.tk-xiong.com/archives/576
服务端的例子在这里:http://blog.tk-xiong.com/archives/586
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 |
#include <Winsock2.h> #include <stdio.h> int main() { 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( "127.0.0.1" ); addrSrv.sin_family = AF_INET; addrSrv.sin_port = htons( 6000 ); //向服务器发送请求 connect( sockClient , (SOCKADDR*)&addrSrv , sizeof( SOCKADDR ) ); //接受数据 char recvBuf[ 100 ]; recv( sockClient , recvBuf , 100 , 0 ); printf( "%s\n" , recvBuf ); //发送数据 send( sockClient , "This is Xiong" , strlen( "This is Xiong" ) + 1 , 0 ); while(1); //关闭套接字 closesocket( sockClient ); WSACleanup(); return 0; } |
可以看到,前面加载套接字库的都一样。
所以直接从socket那里开始讲
1. 创建套接字
1 2 |
//创建套接字 SOCKET sockClient = socket( AF_INET , SOCK_STREAM , 0 ); |
2. 连接服务器
1 2 3 4 5 6 7 8 |
//地址 SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr = inet_addr( "127.0.0.1" ); //服务端地址 addrSrv.sin_family = AF_INET; addrSrv.sin_port = htons( 6000 ); //服务端端口号 //向服务器发送请求 connect( sockClient , (SOCKADDR*)&addrSrv , sizeof( SOCKADDR ) ); |
注意这里的地址 是服务端的,这里使用127.0.0.1是因为客户端和服务端在同一台机器上。
3. 发送-接收 数据
1 2 3 4 5 6 7 |
//接受数据 char recvBuf[ 100 ]; recv( sockClient , recvBuf , 100 , 0 ); printf( "%s\n" , recvBuf ); //发送数据 send( sockClient , "This is Xiong" , strlen( "This is Xiong" ) + 1 , 0 ); |
很简单哦…看服务端即可。
4. 关闭套接字
1 2 3 |
//关闭套接字 closesocket( sockClient );//关闭套接字 WSACleanup();//释放资源 |
就这四步~
【Socket】TCP网络应用程序-Client