第一个服务器客户端模型(非多线程)

xiaoxiao2021-02-28  96

服务器:

#include "stdafx.h" #include <iostream> #include "winsock2.h" #pragma comment (lib, "ws2_32.lib") int _tmain(int argc, _TCHAR* argv[]) { WSADATA wsaData; SOCKET sockfd,sockfd1; if(WSAStartup(MAKEWORD(2,2),&wsaData)<0) { printf("WSAStartup failed\n"); return 1; } else { printf("WSAStartup successed!\n"); } sockfd=socket(AF_INET,SOCK_STREAM,0); if(sockfd==SOCKET_ERROR) { printf("套接口创建失败!"); WSACleanup(); return 1; } else { printf("a new socket has been created!\n"); printf("the socket id is %d\n",sockfd); } struct sockaddr_in addr; int addr_len=sizeof(struct sockaddr_in); addr.sin_family=AF_INET; addr.sin_port=htons(8888); addr.sin_addr.s_addr=INADDR_ANY; if(bind(sockfd,(SOCKADDR *)&addr, sizeof(addr))<0) { printf("bind error!"); return 1; } else { printf("bind ok!"); } listen(sockfd,5); /*SOCKET TempSock=SOCKET_ERROR; while(TempSock==SOCKET_ERROR) { std::cout<<"服务器:正在等待来自客户机的连接...\r\n"; TempSock=accept(sockfd,NULL,NULL); } sockfd=TempSock; std::cout<<"服务器:有客户机到达!\r\n\r\n";*/ int len=sizeof(addr); sockfd1=accept(sockfd,(SOCKADDR*)&addr,&len); char *szMessage="服务器说:有朋自远方来,不亦悦乎。\r\n"; send(sockfd1,szMessage,strlen(szMessage),0); shutdown(sockfd,SD_SEND); closesocket(sockfd); WSACleanup(); system("PAUSE"); return 0; } 客户机:

#include <iostream> #include "winsock2.h" #pragma comment (lib, "ws2_32.lib") int _tmain(int argc, _TCHAR* argv[]) { WSADATA wsaData; SOCKET sockfd; if(WSAStartup(MAKEWORD(2,2),&wsaData)<0) { printf("WSAStartup failed\n"); return 1; } else printf("WSAStartup successed!\n"); sockfd=socket(AF_INET,SOCK_STREAM,0); if(sockfd==SOCKET_ERROR) { printf("套接口创建失败!"); WSACleanup(); return 1; } else { printf("a new socket has been created!\n"); printf("the socket id is %d\n",sockfd); } struct sockaddr_in addr; int addr_len=sizeof(struct sockaddr_in); addr.sin_family=AF_INET; addr.sin_port=htons(8888); addr.sin_addr.s_addr=inet_addr("127.0.0.1"); printf("the ip address of the server is: %s\n",inet_ntoa(addr.sin_addr)); if(connect(sockfd,(SOCKADDR *)&addr, sizeof(addr))<0) { printf("connect error!\n"); return 1; } else { printf("connected ok!\n"); } char buffer[1024]; memset(buffer, 0,1023); int inDataLength=recv(sockfd, buffer,1024,0); std::cout<<buffer; shutdown(sockfd,SD_SEND); closesocket(sockfd); WSACleanup(); return 0; }

转载请注明原文地址: https://www.6miu.com/read-84254.html

最新回复(0)