Click to See Complete Forum and Search --> : [RESOLVED] Encoding.ASCII Problem...


bummper3200
December 31st, 2008, 04:12 PM
I'm currently writing a Server and Client program that communicates over my local network by the TCP Classes. The scenario is Client sends Server a message, Server receives the message, which is encoded in ASCII, decodes it into a string, displays the message in console, then encodes a response to the Client in ASCII, sends it, the client repeats the decode into a string and displays the response to console...

The problem that I am having is that along with the messages that are being transferred are a bunch of control charters (\0 to be exact).

Is there anyway that I can stop this from happening or is there a better way to Encode my messages in to bytes and back to strings than Encoding.ASCII.GetBytes()/.GetString() method?

[EDIT]

I solved the problem with a hackish workaround


string serverResponse = Encoding.ASCII.GetString(bytes);
int index = serverResponse.IndexOf("\0");
serverResponse = serverResponse.Remove(index);

//use response


This just seems a lot of redundant string manipulations(Which I know can have a hefty overhead) so I would like to know if there is a better way to get the same result?

nabeelisnabeel
January 1st, 2009, 12:29 AM
The point is that why is the \0 character coming in response and what is its purpose.

darwen
January 1st, 2009, 04:26 AM
GetString converts the whole byte array - so if you have "hello" in a byte array of length 10 you'll get 5 '\0' at the end.

You need to tell GetString the range in the byte array to be converted.

Darwen.

toraj58
January 1st, 2009, 02:37 PM
you can also try:

Encoding.BigEndianUnicode.GetBytes()
Encoding.BigEndianUnicode.GetString()

bummper3200
January 1st, 2009, 06:32 PM
The problem is pretty much resolved, the string manipulations aren't causing a noticeable slowdown or increased CPU usage so its satisfactory. My programs wont be sending constant messages or subjected to a lot of information transfers so I doubt they will come back to bite me...

Thank you for your replies.

bummper3200.