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

来源:互联网 发布:软件 渠道分销 提成 编辑:程序博客网 时间:2024/05/21 10:30

服务器:

#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;}


原创粉丝点击