我有来自客户端和服务器的UDP传递字符串的客户端 - 服务器项目,反之亦然。我想在服务器和客户端之间传递无限长度的字符串,我想到了一个解决方案,其中服务器将ETX
字符串放在缓冲区[strlen(buffer)+1]以指示客户端有更多的缓冲区来,客户端不需要关闭连接并等待更多数据到来。
C#
/ java
如果需要打印ETX
/ {{1}}将如何处理{{1}}字符?
答案 0 :(得分:1)
设计它是不是一个好主意?
这取决于。你说你想使用UDP。您将如何处理丢失或无序接收的数据包?
是否有更好的解决方案(我希望避免声明约定)
如果您想发送连续流,则更容易使用TCP。
如果需要打印它,C#/ java如何处理ETX char?
他们几乎肯定会将其打印为控制角色。例如,它可以显示为空白或正方形。
答案 1 :(得分:1)
如果你想传递一个无界的字符串我不认为UDP是最好的协议。使用UDP套接字,您可以多次获取包,无序或根本没有。对于字符串,您最可能想要使用TCP套接字。
如果要使用特殊字符,则必须确保在实际字符串数据中从不使用此字符。或者,如果可以使用它,你必须在发送方面以某种方式屏蔽它,然后在接收方一侧取消屏蔽它,这意味着你有某种协议。如果您知道,在发送方,字符串将持续多长时间,首先发送长度可能更容易,然后是字符串本身。或者,您可以在完成后关闭连接。取决于你实际想要实现的目标。