0

我对套接字编程很陌生,我的任务是将 Windows 代码更改为 linux。我有一个问题,我希望你能帮助我。我得到了这个代码段,其中 IP4 地址的四个参数从一个函数传输到我的套接字代码(在带有标题 winsock.h 的 Windows 中)。

struct sockaddr_in server;

server.sin_addr.S_un.S_un_b.s_b1 = (unsigned char)a1;
server.sin_addr.S_un.S_un_b.s_b2 = (unsigned char)a2;
server.sin_addr.S_un.S_un_b.s_b3 = (unsigned char)a3;
server.sin_addr.S_un.S_un_b.s_b4 = (unsigned char)a4;

我的问题是,是否有类似的方式将这些参数传输到 linux 套接字代码。

4

1 回答 1

2

您可以手动转换它:

inaddr_t make_inaddr(
            unsigned char a1,
            unsigned char a2,
            unsigned char a3,
            unsigned char a4)
{
    inaddr_t result;

    result = htonl(((uint32_t)a1 << 24) 
                    | ((uint32_t)a2 << 16)
                    | ((uint32_t)a3 << 8)
                    | a4);
    return result;
}
于 2013-04-26T11:54:29.147 回答