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

服务器:

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值