How to set up a Winsock UDP socket?

前端 未结 4 1523
花落未央
花落未央 2021-02-02 14:21

I want to create a Winsock UDP socket that only sends data to a client. I want the kernel to choose an available port for me. On the other hand, I want to indicate which local I

4条回答
  •  有刺的猬
    2021-02-02 14:53

    Please excuse the lack of error checking:

    char pkt[...];
    size_t pkt_length = ...;
    sockaddr_in dest;
    sockaddr_in local;
    WSAData data;
    WSAStartup( MAKEWORD( 2, 2 ), &data );
    
    local.sin_family = AF_INET;
    local.sin_addr.s_addr = inet_addr(  );
    local.sin_port = 0; // choose any
    
    dest.sin_family = AF_INET;
    dest.sin_addr.s_addr = inet_addr(  );
    dest.sin_port = htons(  );
    
    // create the socket
    SOCKET s = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP );
    // bind to the local address
    bind( s, (sockaddr *)&local, sizeof(local) );
    // send the pkt
    int ret = sendto( s, pkt, pkt_length, 0, (sockaddr *)&dest, sizeof(dest) );
    

提交回复
热议问题