如何通过套接字发送整数?

Kyl*_*ang 3 c

我试图通过套接字发送一个整数.我正在使用此代码执行此操作; 但是,我的C代码将无法编译.编译器抱怨myInt尚未声明.

int tmp = htonl(myInt);
write(socket, &tmp, sizeof(tmp));
Run Code Online (Sandbox Code Playgroud)

我如何申报myInt?谢谢.

Rad*_*scu 5

你确定它在你的程序中被正确声明了吗?

试试这样:

int myInt = something;    
int tmp = htonl((uint32_t)myInt);
write(socket, &tmp, sizeof(tmp));
Run Code Online (Sandbox Code Playgroud)

  • @zneak - pssst,并非所有机器都是x86.您的"虚假步骤"是您如何确保字节排序.大端机器的`ntohl`不会改变字节顺序,因为它是*需要的顺序* (8认同)
  • @zneak:你能详细说说吗?通常,*正好*你想做什么. (7认同)
  • 是的,WTF?这正是它的用途. (2认同)
  • @Brian Roach我同意字节顺序很重要,但使用`htonl`看起来不是一个很好的解决方案.这些内置函数用于网络连接,包含16位和32位整数的逻辑.例如,64位整数或浮点IEEE实数没有等价物.我很确定你最好用你自己的惯例来改变整个结构; 或者只是声明你的网络协议是小端的,因为这是一个完全随意的选择. (2认同)