zoukankan      html  css  js  c++  java
  • [C++]简单的udp通信

    UDPclient.cpp

    #include<WINSOCK2.H>
    #include<iostream>
    #pragma comment(lib,"WS2_32.lib")
    using namespace std;
    int main()
    {
    WSADATA wsaData;//初始化
    SOCKET SendSocket;
    sockaddr_in RecvAddr;//服务器地址
    int Port=4000;//服务器监听地址
    char SendBuf[1024];//发送数据的缓冲区
    int BufLen=1024;//缓冲区大小
    //初始化Socket
    WSAStartup(MAKEWORD(2,2),&wsaData);
    //创建Socket对象
    SendSocket=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
    //设置服务器地址
    RecvAddr.sin_family=AF_INET;
    RecvAddr.sin_port=htons(Port);
    RecvAddr.sin_addr.s_addr=inet_addr("192.168.137.1");
    //向服务器发送数据报
    printf("Sending a datagram to the receiver...
    ");
    sendto(SendSocket,SendBuf,BufLen,0,(SOCKADDR *)&RecvAddr,sizeof(RecvAddr));
    //发送完成,关闭Socket
    printf("finished sending,close socket.
    ");
    closesocket(SendSocket);
    printf("Exting.
    ");
    WSACleanup();
    return 0;
    }


    UDPserver.cpp

    #include<WINSOCK2.H>
    #include<iostream>
    #pragma comment(lib,"WS2_32.lib")
    using namespace std;
    int main()
    {
    WSADATA wsaData;//初始化
    SOCKET RecvSocket;
    sockaddr_in RecvAddr;//服务器地址
    int Port=4000;//服务器监听地址
    char RecvBuf[1024];//发送数据的缓冲区
    int BufLen=1024;//缓冲区大小
    sockaddr_in SenderAddr;
    int SenderAddrSize=sizeof(SenderAddr);
    //初始化Socket
    WSAStartup(MAKEWORD(2,2),&wsaData);
    //创建接收数据报的socket
    RecvSocket=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
    //将socket与制定端口和0.0.0.0绑定
    RecvAddr.sin_family=AF_INET;
    RecvAddr.sin_port=htons(Port);
    RecvAddr.sin_addr.s_addr=htonl(INADDR_ANY);
    bind(RecvSocket,(SOCKADDR *)&RecvAddr,sizeof(RecvAddr));
    //调用Recvfrom函数在绑定的socket上接收数据
    printf("receiving datagrams...
    ");
    recvfrom(RecvSocket,RecvBuf,BufLen,0,(SOCKADDR *)&SenderAddr,&SenderAddrSize);
    //关闭socket,结束接收数据
    printf("finished receiving,closing socket..
    ");
    closesocket(RecvSocket);
    //释放资源,退出
    printf("Exiting.
    ");
    WSACleanup();
    return 0;
    }

    另附:

    windows上简单的TCP/UDP

    linux上简单的TCP/UDP

  • 相关阅读:
    [TJOI2018]教科书般的亵渎
    luogu P4781 【模板】拉格朗日插值
    [SDOI2010]捉迷藏
    [CQOI2016]K远点对
    BZOJ4066 简单题
    [国家集训队]JZPFAR
    Understanding User and Kernel Mode
    Linux下如何查看系统启动时间和运行时间以及安装时间
    CentOS Linux搭建独立SVN Server全套流程(修改svn仓库地址、服务启动等)
    linux下获取占用CPU资源最多的10个进程,可以使用如下命令组合:
  • 原文地址:https://www.cnblogs.com/lyggqm/p/6546925.html
Copyright © 2011-2022 走看看