Ali
Ali

Reputation: 5416

How to use string for TcpClient in C# instead of byte?

In C# I try to send a string through TcpClient as such:

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

I must to convert message from string to bytes, is there a way I can send it directly as string?

I know this is possible in Java.

Upvotes: 1

Views: 11204

Answers (1)

Jon Skeet
Jon Skeet

Reputation: 1500903

Create a StreamWriter on top of outputClient.GetStream:

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

(You may want a using statement to close the writer automatically, and you should also carefully consider which encoding you want to use. Are you sure you want to limit yourself to ASCII? If you control both sides of the connection so can pick an arbitrary encoding, then UTF-8 is usually a good bet.)

Upvotes: 10

Related Questions