通过TCPclient在字符串中发送换行符

本文关键字:换行符 字符串 TCPclient 通过 | 更新日期: 2023-09-27 18:02:26

尝试使用TCPclient和c#发送包含多个换行字符的字符串,其中换行字符需要保持完整…

c++的工作示例在这里:

TCPClient->IOHandler->DefStringEncoding = enUTF8;
TCPClient->IOHandler->WriteLn("write text");
TCPClient->IOHandler->WriteLn("Test'n'n'nTest");

使用这段代码,字符串显示在服务器的文本字段我想要的方式:Test'n'n'nTest

但是当尝试c#:

clientStreamWriter.WriteLine("write text");
clientStreamWriter.WriteLine("Test'n'n'nTest");

这个字符串在服务器文本字段中显示为:Test然后服务器返回一个未知的命令响应…似乎StreamWriter在换行符处打破字符串,并将其余部分作为新字符串发送,服务器期望一个新命令。

我怎样才能防止这种情况的发生?我不知道服务器代码是什么,用c++编写对我来说不是一个选择:)

通过TCPclient在字符串中发送换行符

问题是你的服务器协议;您需要更改服务器来修复它。你需要消息框架

或者你可以把你的字符串分开,作为单独的调用发送…

假设您的客户端足够聪明,可以找出/您的协议以某种方式定义了结束消息?

TCPClient->IOHandler->DefStringEncoding = enUTF8;
TCPClient->IOHandler->WriteLn("write text");
TCPClient->IOHandler->WriteLn("[[begin]]");
TCPClient->IOHandler->WriteLn("Test");
TCPClient->IOHandler->WriteLn("");
TCPClient->IOHandler->WriteLn("");
TCPClient->IOHandler->WriteLn("");
TCPClient->IOHandler->WriteLn("Test");
TCPClient->IOHandler->WriteLn("[[end]]");