C++간이 UDP 인터넷 채 팅 실현

4518 단어 C++채 팅 방
본 논문 의 사례 는 C++간단 한 UDP 인터넷 채 팅 방 을 실현 하 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
프로젝트 이름:NetSrv
NetSrv.cpp

//    
#include<Winsock2.h>
#include<stdio.h>

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);//            , htonl    
 //                    。      32                  。
 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);
  //   ,    buf,   ,,       ,                     
  if('q'==recvBuf[0])//             q ,
  {
   sendto(sockSrv,"q",strlen("q")+1,0,(SOCKADDR*)&addrClient,len);
   //  ,       q  ,   ,q,        ,,        ,            ,  len  
   printf("Chat end!
"); break; } // q, , tempBuf , ip , 。 sprintf(tempBuf,"%s say : %s",inet_ntoa(addrClient.sin_addr),recvBuf); printf("%s
",tempBuf);// // printf("please input data:
"); gets(sendBuf);// , , , 。 sendto(sockSrv,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)&addrClient,len); // , ,( , strlen ) , , } // closesocket(sockSrv); WSACleanup();// }
NetClient.cpp

//   
#include<Winsock2.h>
#include<stdio.h>

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;
 //  upd    (   ),      ,                  
 //         ,      ,    127.0.0.1), inet_addr         ulang  
 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:
"); 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!
"); break; } sprintf(tempBuf,"%s say : %s",inet_ntoa(addrSrv.sin_addr),recvBuf); // ip ( ), printf("%s
",tempBuf); } // closesocket(sockClient); WSACleanup(); }
ws2_32.lib


이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기