如何在C#中为TcpClient使用字符串而不是字节?

如何在C#中为TcpClient使用字符串而不是字节?,c#,.net,C#,.net,在C#中,我尝试通过TcpClient发送字符串,如下所示: byte[] outputOutStream = new byte[1024]; ASCIIEncoding outputAsciiEncoder string message //This is the message I want to send TcpClient outputClient = TcpClient(ip, port); Stream outputDataStreamWriter outputDataSt

在C#中,我尝试通过TcpClient发送字符串,如下所示:

byte[] outputOutStream = new byte[1024];
ASCIIEncoding outputAsciiEncoder
string message //This is the message I want to send
TcpClient outputClient = TcpClient(ip, port); 
Stream outputDataStreamWriter   

outputDataStreamWriter = outputClient.GetStream();
outputOutStream = outputAsciiEncoder.GetBytes(message);
outputDataStreamWriter.Write(outputOutStream, 0, outputOutStream.Length);
我必须将消息从字符串转换为字节,有没有办法直接将其作为字符串发送?

我知道这在Java中是可能的。

在outputClient.GetStream上创建一个:

StreamWriter writer = new StreamWriter(outputClient.GetStream(),
                                       Encoding.ASCII);
writer.Write(message);

(您可能需要使用Script)自动关闭写入器,并且还应该仔细考虑要使用哪种编码。确实要限制您自己的ASCII吗?如果您控制连接的两侧,那么可以选择任意编码,那么UTF-8通常是一个很好的选择。

在outputClient.GetStream上创建一个:

StreamWriter writer = new StreamWriter(outputClient.GetStream(),
                                       Encoding.ASCII);
writer.Write(message);

(您可能需要使用Script)自动关闭写入器,并且还应该仔细考虑要使用哪种编码。确实要限制您自己的ASCII吗?如果您控制连接的两侧,那么可以选择任意编码,那么UTF-8通常是一个很好的选择。

他是否也需要将字符串的长度编码为流的一部分,还是自动处理?数据流不包含字符串的长度。如果他想这么做,BinaryWriter可能是更好的选择。基本上,这取决于协议。
编码。UTF8可能是更安全的选择,除非您知道另一端是明确的ASCII码,如果您使用的是HTTP,则使用双精度。@JosephLennox:我只使用ASCII码,因为OP也使用ASCII码。猜测任何编码都是一个坏主意;您应该确切地知道双方要使用哪种编码。不过,我会在答案中添加UTF-8的建议。他是否也需要将字符串的长度编码为流的一部分,或者是自动处理的?数据流不包含字符串的长度。如果他想这么做,BinaryWriter可能是更好的选择。基本上,这取决于协议。
编码。UTF8可能是更安全的选择,除非您知道另一端是明确的ASCII码,如果您使用的是HTTP,则使用双精度。@JosephLennox:我只使用ASCII码,因为OP也使用ASCII码。猜测任何编码都是一个坏主意;您应该确切地知道双方要使用哪种编码。不过,我会在答案中添加一个关于UTF-8的建议。