2013-04-26 53 views
0

我对套接字编程颇为陌生,我的任务是将Windows代码更改为linux。我有一个问题,我希望你能帮助我。我得到了这段代码段,其中IP4地址的四个参数从函数传递到我的套接字代码(在winsock.h头文件中的窗口中)。Socket编程 - 将Windows代码转换为linux代码

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套接字代码。

+0

和'server'是... – m0skit0 2013-04-26 11:29:26

+0

服务器的定义是这样的:'结构sockaddr_in的服务器;' – Kilian 2013-04-26 11:37:20

+1

请编辑您的问题添加此信息 – m0skit0 2013-04-26 11:58:08

回答

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; 
} 
+0

谢谢,这真的很好! – Kilian 2013-05-07 10:59:02

+0

@Kilian然后是时候接受✓这个答案,以鼓励其他人给出很好的答案。 – glglgl 2013-05-28 13:23:30