套接字编程 - 将Windows代码转换为linux代码

时间:2013-04-26 11:25:10

标签: c sockets

我对套接字编程很新,我的任务是将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套接字代码。

1 个答案:

答案 0 :(得分: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;
}