0
点赞
收藏
分享

微信扫一扫

WinSock UDP通讯实例

下载

#include <WinSock2.h> 

#include <stdio.h>

#define PORT 8888

int main() //server

WinSock UDP通讯实例_#include{

    WSADATA wsaData;

    int Ret = WSAStartup(MAKEWORD(2,2),&wsaData);

    printf("ServerWinSock UDP通讯实例_#includeWinSock UDP通讯实例_#includeWinSock UDP通讯实例_#include!\n");

    if(Ret != 0)

    WinSock UDP通讯实例_#include{

        printf("无法初始化winsock.\n");

        WSACleanup();

    }

    elseWinSock UDP通讯实例_#include{

        

    //    printf("初始化winsock成功\n");

    }

    

    if ( LOBYTE( wsaData.wVersion ) != 2 ||

        HIBYTE( wsaData.wVersion ) != 2 )

    WinSock UDP通讯实例_#include{

        WSACleanup( );

        return 1; 

    }

    SOCKET socket=::socket(AF_INET,SOCK_DGRAM,IPPROTO_IP);

    sockaddr_in addr;

    addr.sin_addr.S_un.S_addr=INADDR_ANY;

    addr.sin_family=AF_INET;

    addr.sin_port=ntohs(PORT);

    

    

    

    if(socket==INVALID_SOCKET)

    WinSock UDP通讯实例_#include{

        printf("socket Error!");

    }

    int rs=    bind(socket,(sockaddr*)&addr,sizeof(addr));

    

    if (rs!=0)

    WinSock UDP通讯实例_#include{

        printf("bind failed!");

        return 1;

    }

    char buf[200]="\0";

    char temp[200]="\0";

    sockaddr_in addrcl;

    int len=sizeof(sockaddr);

    

    while(1)WinSock UDP通讯实例_#include{

        

        recvfrom(socket,buf,sizeof(buf),0,(sockaddr*)&addrcl,&len);//用新建的地址结构保存客户端的信息 

        

        sprintf(temp,"%s:%s",inet_ntoa(addrcl.sin_addr),buf);

        sendto(socket,temp,strlen(temp)+1,0,(sockaddr*)&addrcl,sizeof(addr));

        if(strcmp(buf,"srvexit")==0)

        WinSock UDP通讯实例_#include{

            break;

        }

        printf("%s",buf);

    }

    closesocket(socket);

    

    WSACleanup();

    printf("exit\n");

    return 0;

}



#include <WinSock2.h>

#include <stdio.h>

#define PORT 8888

int main()

WinSock UDP通讯实例_#include{

    WSADATA wsaData;

    int Ret = WSAStartup(MAKEWORD(2,2),&wsaData);

    printf("ClientWinSock UDP通讯实例_#includeWinSock UDP通讯实例_#include..!\n");

    if(Ret != 0)

    WinSock UDP通讯实例_#include{

        printf("无法初始化winsock.\n");

        WSACleanup();

    }

    elseWinSock UDP通讯实例_#include{

        

    //    printf("初始化winsock成功\n");

    }

    

    SOCKET socketc=::socket(AF_INET,SOCK_DGRAM,IPPROTO_IP);

    sockaddr_in addr;

    addr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");

    addr.sin_family=AF_INET;

    addr.sin_port=ntohs(PORT);

    

    if(socketc==INVALID_SOCKET)

    WinSock UDP通讯实例_#include{

        printf("socket Error!");

    }

    int len=sizeof(sockaddr);

    

    while (1)//client

    WinSock UDP通讯实例_#include{

        char buf[200]="\0";

        char rbuf[300]="\0";

        printf("\n:");

        scanf("%s",&buf);

        sendto(socketc,buf,strlen(buf)+1,0,(SOCKADDR*)&addr,len);//用回原来的地址结构

    

        recvfrom(socketc,rbuf,sizeof(rbuf),0,(SOCKADDR*)&addr,&len);

        if(strcmp(rbuf,"exit")==0)

        WinSock UDP通讯实例_#include{

            break;

        }

        printf("%s",rbuf);

        

    }

    

    closesocket(socketc);

    WSACleanup();

    printf("end\n");

    return 0;

}





举报

相关推荐

0 条评论