Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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
C# 通过TCPclient在字符串内发送换行符_C#_.net - Fatal编程技术网

C# 通过TCPclient在字符串内发送换行符

C# 通过TCPclient在字符串内发送换行符,c#,.net,C#,.net,正在尝试使用TCPclient和C#在单词之间发送包含多个换行符的字符串,其中换行符需要保持完整 工作C++示例如下: TCPClient->IOHandler->DefStringEncoding = enUTF8; TCPClient->IOHandler->WriteLn("write text"); TCPClient->IOHandler->WriteLn("Test\n\n\nTest"); 使用此代码,字符串以我想要的方式显示在servers文

正在尝试使用TCPclient和C#在单词之间发送包含多个换行符的字符串,其中换行符需要保持完整

工作C++示例如下:

TCPClient->IOHandler->DefStringEncoding = enUTF8;
TCPClient->IOHandler->WriteLn("write text");
TCPClient->IOHandler->WriteLn("Test\n\n\nTest");
使用此代码,字符串以我想要的方式显示在servers文本字段中:Test\n\n\nTest

但在尝试c#时:

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


我怎样才能防止这种情况发生?我不知道服务器代码是什么,写在C++中不是我的选择:

问题是用你的服务器协议;您需要更改服务器以修复它

问题在于您的服务器协议;您需要更改服务器以修复它

或者您可以将您的字符串拆分,并将其作为单独的调用发送

假设您的客户端足够聪明,能够理解/您的协议以某种方式定义了终端消息

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]]");

或者你可以把你的字符串分割成不同的呼叫发送

假设您的客户端足够聪明,能够理解/您的协议以某种方式定义了终端消息

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]]");

服务器是第三方的,很遗憾,我无法访问源代码。但是,由于它与上面的C++示例以及通过telnet进行协作,所以我也应该能够使它与C?你应该依靠供应商来解决它。这只是偶尔起作用而已。也就是说,SLaks发布了一个可能有效的答案-将
AutoFlush
设置为
false
,然后在每次
WriteLine
调用后调用
Flush
。请注意,您没有解决问题;你只是希望避免它。服务器仍然是错误的,一旦其他因素起作用(其他进程在内存中/内存中交换,客户端/服务器之间的路由器发生更改等),服务器仍然会失败。服务器是第三方,很遗憾,我无法访问源代码。但是,由于它与上面的C++示例以及通过telnet进行协作,所以我也应该能够使它与C?你应该依靠供应商来解决它。这只是偶尔起作用而已。也就是说,SLaks发布了一个可能有效的答案-将
AutoFlush
设置为
false
,然后在每次
WriteLine
调用后调用
Flush
。请注意,您没有解决问题;你只是希望避免它。服务器仍然是错误的,一旦其他因素起作用(其他进程在内存中/内存中交换,客户端/服务器之间的路由器发生更改,等等),服务器仍然会失败。