简单聊天器

project->settings->link 在Object/library modules:末尾加:ws2_32.lib

//服务器

#include <Winsock2.h>
#include<iostream.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);
    addrSrv.sin_family=AF_INET;
    addrSrv.sin_port=htons(6000);
   
    bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
   
    SOCKADDR_IN addrClient;
    int len=sizeof(SOCKADDR);
    char recvBuf[100];
    char sendBuf[100];
    char tempBuf[200];
    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);
        cout<<"please enter your word:"<<endl;
        gets(sendBuf);
        sendto(sockSrv,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)&addrClient,len);
    }
   
    closesocket(sockSrv);
    WSACleanup();
}

 

//客户端

#include <Winsock2.h>
#include<iostream.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;
    addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
    addrSrv.sin_family=AF_INET;
    addrSrv.sin_port=htons(6000);
    bind(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));

    char recvBuf[100];
    char sendBuf[100];
    char tempBuf[100];
    int len=sizeof(SOCKADDR);
    cout<<"chat begin!"<<endl;
    while(1)
    {
        cout<<"please enter your words"<<endl;
        gets(sendBuf);
        sendto(sockClient,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)&addrSrv,len);
        recv(sockClient,recvBuf,100,0);
        if('q'==recvBuf[0])
        {
            sendto(sockClient,"q",strlen("q")+1,0,(SOCKADDR*)&addrSrv,len);
            cout<<"chat end!"<<endl;
            break;
        }
        sprintf(tempBuf,"%s say : %s",inet_ntoa(addrSrv.sin_addr),recvBuf);
        cout<<tempBuf<<endl;

    }
    closesocket(sockClient);
    WSACleanup();
}

你可能感兴趣的:(简单聊天器)