UDP 汉字传输问题
客户端发送汉字时候 传给服务端的字符不能获取完整的字符,比如(你好吗)传给服务器 服务器只收到(你)一个字
大家帮忙看看
发送端
Data msgToSend = new Data();
msgToSend.strName = strName;
msgToSend.strMessage = lstChatters.SelectedItem.ToString() + "|" + txtMessage.Text;
msgToSend.cmdCommand = Command.Message;
byte[] byteData = msgToSend.ToByte();
//Send it to the server
clientSocket.BeginSendTo (byteData, 0, byteData.Length, SocketFlags.None, epServer, new AsyncCallback(OnSend), null);
public byte[] ToByte()
{
List<byte> result = new List<byte>();
//First four are for the Command
result.AddRange(BitConverter.GetBytes((int)cmdCommand));
//Add the length of the name
if (strName != null)
result.AddRange(BitConverter.GetBytes(strName.Length));
else
result.AddRange(BitConverter.GetBytes(0));
//Length of the message
if (strMessage != null)
result.AddRange(BitConverter.GetBytes(strMessage.Length));
else
result.AddRange(BitConverter.GetBytes(0));
//Add the name
if (strName != null)
result.AddRange(Encoding.GetEncoding("gb2312").GetBytes(strName));
//And, lastly we add the message text to our array of bytes
if (strMessage != null)
result.AddRange(Encoding.GetEncoding("gb2312").GetBytes(strMessage));
return result.ToArray();
}
服务端
serverSocket.EndReceiveFrom (ar, ref epSender);
//Transform the array of bytes received from the user into an
//intelligent form of object Data
Data msgReceived = new Data(byteData);
string strmessage = msgReceived.strMessage;(strMessage 显示(你?))
大家帮帮忙 谢谢啦