字符聊天程序

#include  < Winsock2.h >
#include 
< stdio.h >
#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 >
#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();
}

你可能感兴趣的:(socket)