我试图通过套接字发送一个整数。我正在使用此代码执行此操作;但是,我的C代码将无法编译。编译器抱怨myInt尚未声明。
int tmp = htonl(myInt);
write(socket, &tmp, sizeof(tmp));
我如何申报myInt?感谢。
答案 0 :(得分:5)
您确定它已在您的程序中正确声明了吗?
试试这样:
int myInt = something;
int tmp = htonl((uint32_t)myInt);
write(socket, &tmp, sizeof(tmp));
答案 1 :(得分:1)
在处理套接字库之前,您可能需要花些时间学习基本的C语言。
您需要将myInt声明为整数类型的变量,如下所示:
int myInt;
这将编译器引入名为" myInt"的标识符。其类型为int。然后,编译器可以根据myInt的类型决定您是否使用myInt进行合法处理。
给变量一个初始值几乎总是一个好主意:
int myInt = 0;
答案 2 :(得分:-2)
一个简单的解决方案是将整数转换为char并发送4字节的char缓冲区
int myInt char * ptr =& myInt; write(socket,ptr,sizeof(int));
在接收端读取4字节.. 你对endianess没有任何问题。
答案 3 :(得分:-2)
将所有内容转换为char
,您不必担心字节序,因为char
是一个字节,而是以字节为单位读取字节。