C# Ascii编码器.getString()返回1500长度
我有一个基本的加密聊天。我正在尝试执行一个C# Ascii编码器.getString()返回1500长度,c#,string,decode,encode,C#,String,Decode,Encode,我有一个基本的加密聊天。我正在尝试执行一个foreach(encryptedMessage中的char c),但长度总是1500。如何消除空字符?我已经尝试了trim() 此代码发送: 此代码接收: 这里的罪魁祸首可能是“发送”和“接收”部分,但您没有概述代码的这部分是如何工作的。如果你把1500个字节解码成字符,你会得到1500个字符,这一点也不奇怪。问题是,你收到1500字节了吗?是的,这是发送和接收部分,我将更新代码以便你能看到。请注意,我上面关于1500字节的评论将产生1500个字符,这
foreach(encryptedMessage中的char c)
,但长度总是1500。如何消除空字符?我已经尝试了trim()
此代码发送:
此代码接收:
这里的罪魁祸首可能是“发送”和“接收”部分,但您没有概述代码的这部分是如何工作的。如果你把1500个字节解码成字符,你会得到1500个字符,这一点也不奇怪。问题是,你收到1500字节了吗?是的,这是发送和接收部分,我将更新代码以便你能看到。请注意,我上面关于1500字节的评论将产生1500个字符,这与你使用ASCII编码有关。任何未来的访客都应该注意到,其他编码器将不会提供这种保证。诚恳地说,我对聊天项目是新手,所以我不知道。如何解决此问题?此注释可能与您的情况无关,但一般来说,最好不要使用ASCII作为传输字符集。C#和.Net(以及Java)基于Unicode,世界越来越小,因此当使用非英语语言的人试图使用您的程序时,限制自己使用ASCII字符可能会成为一个问题。甚至是使用英语但名字中带有重音字母的人,或者在世界其他地方试图正确拼写城市名称的人。推荐用于传输字符的字符集现在是(多年来一直是)UTF-8。
byte[] msg = new byte[1500];
[....]
System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
msg = enc.GetBytes(encryptedString);
sck.Send(msg);
byte[] buffer = new byte[1500];
sck.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref epRemote, new AsyncCallback(MessageCallBack), buffer);
byte[] recievedData = new byte[1500];
recievedData = (byte[])aResult.AsyncState;
//Converting byte[] to string
ASCIIEncoding eEncoding = new ASCIIEncoding();
string encrytedMessage = eEncoding.GetString(recievedData);
foreach(char c in encryptedMessage)
{
[....]
}
byte[] buffer = new byte[1500];
sck.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref epRemote, new AsyncCallback(MessageCallBack), buffer);