C:使用send()发送长字符串

jon*_*scb 0 c networking send

我正在使用Linux并尝试通过send()发送长消息.消息是1270字节,但我的客户端应用程序只接收1024字节.

由于1024字节是一个方便的数字,我猜测send()一次只能发送1024个字节.我查看了发送的手册页,但所有关于长消息的说法是:

当消息不适合插入插座的发送缓冲区,发送()通常块,除非该插座已被放置在非阻塞I/O模式.在非阻塞模式下,在这种情况下,它将失败并出现错误EAGAIN或EWOULD-BLOCK.select(2)调用可用于确定何时可以发送更多数据.

我正在使用阻止模式,手册页没有说明要做什么.我发送的确切电话看起来像这样: send(socket, message, strlen(message), 0);

我需要将字符串拆分为1024字节块并单独发送吗?我的客户如何处理这个问题?如果我的客户需要做什么,我就提到,这是在Java中,它使用InputStreamReader的接收数据.

Jim*_*som 5

你自己的send实际工作方式存在误解.它不会向您发送任何内容,它最多会发送您作为参数传入的字节数.这意味着您必须检查返回值send,删除实际从您的发送队列发送的字节数,并尝试通过另一个发送调用发送剩余的内容.recv顺便说一下也是如此.