140.143.91.57 ws2_32.lib 服务器Sever: 1、初始化套接字WSAStartup 2、创建socket() 3、绑定套接字和端口bind 4、监听该端口listen() // 5、接收来自客户端的链接请求accept //接收connect()请求 6、从socket中读取数据recv() 7、closesocket()关闭套接字 客户端(Client) 1、初始化套接字WSAStartup 2、创建socket() 3、connect链接到服务器指定端口 4、send()向套接字发送数据 5、closesocket()关闭套接字 // Socket_Server.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <WinSock2.h> #include <Windows.h> int _tmain(int argc, _TCHAR* argv[]) { //1加载套接字库 WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 2, 2 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) {//表示初始化不成功 /* Tell the user that we could not find a usable */ /* WinSock DLL. */ //return 0; printf("加载套接字库出错 \n"); } //2创建一个套接字 供使用 SOCKET ServerSocket; //3、向服务器发出连接请求(connect)。 SOCKADDR_IN socksin; socksin.sin_family=AF_INET; socksin.sin_port=htons(6688);//服务器端口 socksin.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");//设置绑定的IP地址 192.168.1.111 //printf("%04X \n",htonl(0x668899AA)); ServerSocket=socket(AF_INET,SOCK_STREAM,0); int rf=connect(ServerSocket,(SOCKADDR*)&socksin,sizeof(socksin)); while(1) { if (rf==SOCKET_ERROR) { printf("未成功连接到服务器\n"); closesocket(ServerSocket); ServerSocket=socket(AF_INET,SOCK_STREAM,0); rf=connect(ServerSocket,(SOCKADDR*)&socksin,sizeof(socksin)); Sleep(1000); }else { printf("成功连接到服务器\n"); char *ps="客户端数据来了 yjxsoft.com\n"; char s[256]; gets(s); ps=s; send(ServerSocket,ps,strlen(ps),0); //接收数据 recv(ServerSocket,ps,256,0); printf("Client:%s 来自服务器 ErrorCode=%08X\n",ps,WSAGetLastError()); } //continue while } closesocket(ServerSocket); WSACleanup(); return 0; } // Socket_Server.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <WinSock2.h> #include <Windows.h> int _tmain(int argc, _TCHAR* argv[]) { //1加载套接字库 WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 2, 2 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) {//表示初始化不成功 printf("WSAStartup初始化出错 \n"); getchar(); return 1; } //2创建一个套接字 供使用 SOCKET ServerSocket=socket(AF_INET,SOCK_STREAM,0); //3、将套接字绑定到一个本地地址和端口上(bind) SOCKADDR_IN socksin; socksin.sin_family=AF_INET; socksin.sin_port=htons(6688); socksin.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//设置绑定的IP地址 192.168.1.111 //printf("%04X \n",htonl(0x668899AA)); bind(ServerSocket,(SOCKADDR*)&socksin,sizeof(socksin)); // 4、将套接字设为监听模式,准备接收客户请求(listen) listen(ServerSocket,4); // 5、等待客户请求到来;当请求到来后,接受连接请求,返回一个新的对应于此次连接 的套接字(accept) SOCKADDR_IN clientsin; int len=sizeof(SOCKADDR_IN); //5、保存客户端的 套接字句柄clientSocket //等待客户端连接 SOCKET clientSocket= accept(ServerSocket,(SOCKADDR*)&clientsin,&len); //单线程 单个客户 端 while(1) { // 6、用返回的套接字和客户端进行通信(send/recv) // 7、返回,等待另一客户请求 回到第5步 char s[256]={0}; recv(clientSocket,s,256,0); if (stricmp(s,"exit")==0) { return 0;//退出服务端程序 } printf("Client Data:%s \n ",s); printf("wait input:"); char strMsg[1024]; scanf("%s",strMsg); send(clientSocket,strMsg,strlen(strMsg)+2,0); } //end while closesocket(ServerSocket); WSACleanup(); return 0; } //多线程版 服务器 // Socket_Server.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <WinSock2.h> #include <Windows.h> //套接字处理回调 DWORD WINAPI threadProc(LPVOID parg) { SOCKET clientSocket=(SOCKET)parg; while(1) { // 6、用返回的套接字和客户端进行通信(send/recv) // 7、返回,等待另一客户请求 回到第5步 char s[256]={0}; recv(clientSocket,s,256,0); if (stricmp(s,"exit")==0) { return 0;//退出服务端程序 } printf("Client Data:%s \n ",s); printf("wait input:"); char strMsg[1024]; scanf("%s",strMsg); send(clientSocket,strMsg,strlen(strMsg)+2,0); } //end while } int _tmain(int argc, _TCHAR* argv[]) { //1加载套接字库 WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 2, 2 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) {//表示初始化不成功 printf("WSAStartup初始化出错 \n"); getchar(); return 1; } //2创建一个套接字 供使用 SOCKET ServerSocket=socket(AF_INET,SOCK_STREAM,0); //3、将套接字绑定到一个本地地址和端口上(bind) SOCKADDR_IN socksin; socksin.sin_family=AF_INET; socksin.sin_port=htons(6688);//设置端口 socksin.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//设置绑定的IP地址 192.168.1.111 //printf("%04X \n",htonl(0x668899AA)); bind(ServerSocket,(SOCKADDR*)&socksin,sizeof(socksin)); // 4、将套接字设为监听模式,准备接收客户请求(listen) listen(ServerSocket,4); //5、等待客户请求到来;当请求到来后,接受连接请求,返回一个新的对应于此次连接的套接 字(accept) SOCKADDR_IN clientsin; int len=sizeof(SOCKADDR_IN); //5、保存客户端的 套接字句柄clientSocket //等待客户端连接 SOCKET clientSocket= 0;//accept(ServerSocket,(SOCKADDR*)&clientsin,&len); //单线程 单个 客户端 while(1) { clientSocket= accept(ServerSocket,(SOCKADDR*)&clientsin,&len); //单线程 单个客 户端 ::CreateThread(0,0,threadProc,(LPVOID)clientSocket,0,0); } closesocket(ServerSocket); WSACleanup(); return 0; } |
套接字(服务器/客户端) 框架 C++参考代码
猜你喜欢
转载自blog.csdn.net/yedehei_lt/article/details/80656903
今日推荐
周排行