【问题标题】:Socket programming - Converting Windows code into linux codeSocket 编程——将 Windows 代码转换为 linux 代码
【发布时间】:2013-04-20 13:24:55
【问题描述】:

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

【问题讨论】:

  • 服务器定义如下:struct sockaddr_in server;
  • 请编辑您的问题以添加此信息

标签: c sockets


【解决方案1】:

您可以手动转换:

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

【讨论】:

  • @Kilian 那么是时候接受✓这个答案了,以鼓励其他人给出好的答案。
猜你喜欢
  • 1970-01-01
  • 2014-09-01
  • 2013-01-22
  • 1970-01-01
  • 2018-09-10
  • 1970-01-01
  • 1970-01-01
  • 2020-11-04
  • 2011-05-04
相关资源
最近更新 更多