【发布时间】:2014-11-03 02:36:10
【问题描述】:
我对在 Unix 上应该通过 C 中的套接字写入/读取的字节数有一些疑问。我习惯发送 1024 字节,但有时发送短字符串时确实太多了。
我从一个文件中读取一个字符串,我不知道这个字符串是多少字节,它每次都可以变化,可以是10、20或1000。我只知道它是strlen())。那么,无论我从文件中读取的字符串的长度如何,唯一的解决方案是始终读取最大字节数(在这种情况下为 1024)?
例如,使用以下代码:
read(socket,stringBuff,SIZE);
如果我想读取一个 10 字节的字符串,如果 SIZE 是 10 而不是 1024 不是更好吗?
【问题讨论】:
-
recv()返回通过套接字接收的字节数。 -
请不要用一个问题来宣传另一个问题。
-
@timrau 是的,我知道,也读过,但如果我没记错的话,当你写一个读调用时,你应该写一些类似 read(socket,stringBuff,SIZE) 的东西,并且在SIZE 您必须指定要读取的字符数。我的意思是,如果我读取一个 10 字符的字符串,如果 SIZE 是 10 而不是 1024 会更好吗?
-
为您使用的任何协议的标头读取足够的字节,然后从该标头中计算出预期的长度,然后读取那么多字节