聊天程序(C++)

服务端:

#include<WinSock2.h>
#include<stdio.h>
//加载静态lib文件或者加载动态dll文件
#pragma comment(lib,"ws2_32.lib")
void main()
{
    //加载套接字库
	WORD wVersionRequested;
	WSADATA wsaData;
	int err;
	wVersionRequested=MAKEWORD(1,1);
	err=WSAStartup(wVersionRequested,&wsaData);
	if(err!=0)
	{
		return;
	}
	if(LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData.wVersion)!=1)
	{
		WSACleanup();
		return;
	}
   //创建套接字
   SOCKET sockSrv=socket(AF_INET,SOCK_DGRAM,0);
   SOCKADDR_IN addrSrv;
   addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
   addrSrv.sin_family=AF_INET;
   addrSrv.sin_port=htons(6000);
   //绑定套接字
   bind(sockSrv,(SOCKADDR *)&addrSrv,sizeof(SOCKADDR));
   char recvBuf[100];
   char sendBuf[100];
   char tempBuf[200];

   SOCKADDR_IN addrClient;
   int len=sizeof(SOCKADDR);

   while(1)
   {
	   //等待并接收数据
	   recvfrom(sockSrv,recvBuf,100,0,(SOCKADDR *)&addrClient,&len);
	   if('q'==recvBuf[0])
	   {
		   sendto(sockSrv,"q",strlen("q")+1,0,(SOCKADDR*)&addrClient,len);
		   printf("Chat end!\n");
		   break;
	   }
	   sprintf(tempBuf,"%s say %s",inet_ntoa(addrClient.sin_addr),recvBuf);
	   printf("%s\n",tempBuf);
	   //发送数据
	   printf("Please input data:\n");
	   gets(sendBuf);
	   sendto(sockSrv,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)&addrClient,len);
   }
   //关闭套接字
   closesocket(sockSrv);
   WSACleanup();
   }

  

客户端:

#include<WinSock2.h>
#include<stdio.h>
//加载静态lib文件或者加载动态dll文件
#pragma comment(lib,"ws2_32.lib")
void main()
{
    //加载套接字库
	WORD wVersionRequested;
	WSADATA wsaData;
	int err;
	wVersionRequested=MAKEWORD(1,1);
	err=WSAStartup(wVersionRequested,&wsaData);
	if(err!=0)
	{
		return;
	}
	if(LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData.wVersion)!=1)
	{
		WSACleanup();
		return;
	}
   //创建套接字
   SOCKET sockClient=socket(AF_INET,SOCK_DGRAM,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);
   
   char recvBuf[100];
   char sendBuf[100];
   char tempBuf[200];

   int len=sizeof(SOCKADDR);

   while(1)
   {
	   //发送数据
	   printf("Please input data:\n");
	   gets(sendBuf);
	   sendto(sockClient,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)&addrSrv,len);
	   //等待并接收数据
	   recvfrom(sockClient,recvBuf,100,0,(SOCKADDR *)&addrSrv,&len);
	   if('q'==recvBuf[0])
	   {
		   sendto(sockClient,"q",strlen("q")+1,0,(SOCKADDR*)&addrSrv,len);
		   printf("Chat end!\n");
		   break;
	   }
	   sprintf(tempBuf,"%s say %s",inet_ntoa(addrSrv.sin_addr),recvBuf);
	   printf("%s\n",tempBuf);
	 
   }
   //关闭套接字
   closesocket(sockClient);
   WSACleanup();
   }

  


你可能感兴趣的:(聊天程序)