Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java';s readInt()在C中的等价物?_Java_C_Linux_Sockets_Inputstream - Fatal编程技术网

Java';s readInt()在C中的等价物?

Java';s readInt()在C中的等价物?,java,c,linux,sockets,inputstream,Java,C,Linux,Sockets,Inputstream,一方面,我有一个Java客户机将INT写入其outputstream: int a = 20; dataout.writeInt(a); dataout.flush(); 另一方面,我有一台C服务器在监听连接: int client = accept(...); 如何读取Java发送的int 如果我有一台Java服务器,我可以很容易地编写: int a = dataIn.readInt(); 如何在C中实现这一点 谢谢将其读入字符缓冲区并使用atoi()将字符串转换为int。将其读入字符缓

一方面,我有一个Java客户机将INT写入其outputstream:

int a = 20;
dataout.writeInt(a);
dataout.flush();
另一方面,我有一台C服务器在监听连接:

int client = accept(...);
如何读取Java发送的int

如果我有一台Java服务器,我可以很容易地编写:

int a = dataIn.readInt();
如何在C中实现这一点


谢谢

将其读入字符缓冲区并使用
atoi()
将字符串转换为int。

将其读入字符缓冲区并使用
atoi()
将字符串转换为int。

您可以使用Read函数,但必须小心使用sizeof(int)您可以使用read函数,但必须小心使用套接字中的sizeof(int)字符,然后您必须担心endianess。

如果您不介意以纯文本发送:

fscanf(dataIn, "%d", &a);
纯文本规则:-)
请确保在刷新之前从源文件发送一个“\n”(或不是数字的内容)。

fscanf
如果您不介意以纯文本形式发送:

fscanf(dataIn, "%d", &a);
纯文本规则:-)
请确保在刷新之前从源发送一个“\n”(或不是数字的内容)。

将取决于服务器的端号。将取决于服务器的端号。假设整数为4字节,这是您的意思吗?char-buf[4];读取(客户,buf,4);int integer=atoi(buf);不完全是这样-如果Java服务器将Int作为四个字节发送,那么整个事情将变得更加复杂,因为您基本上需要知道Int是以什么字节顺序发送的。我会尝试将Int作为字符串发送,使用更大的缓冲区(最多16个字节)来存储字符串,然后按照您的建议使用atoi。如果您以字节表示形式发送Int,我会在发送之前将其转换为网络字节顺序,并在收到后将其转换回主机顺序,否则您将陷入一个非常奇怪的错误世界。atoi没有错误处理,atoi(“0”)==atoi(“blah”);最好使用strolassuming将整数表示为4字节,这就是您的意思吗?char-buf[4];读取(客户,buf,4);int integer=atoi(buf);不完全是这样-如果Java服务器将Int作为四个字节发送,那么整个事情将变得更加复杂,因为您基本上需要知道Int是以什么字节顺序发送的。我会尝试将Int作为字符串发送,使用更大的缓冲区(最多16个字节)来存储字符串,然后按照您的建议使用atoi。如果您以字节表示形式发送Int,我会在发送之前将其转换为网络字节顺序,并在收到后将其转换回主机顺序,否则您将陷入一个非常奇怪的错误世界。atoi没有错误处理,atoi(“0”)==atoi(“blah”);你最好用strtol