我正在尝试使用 TCP Client来制作登录功能。我有两种形式:客户端和服务器端。
客户端处理用户输入,而服务器端连接到数据库。
问题是阅读器结果,它总是将两个输入组合成一个长字符串,如下所示:
myusernamemypassword
这是客户端发送方的一部分:
byte[] byteUsername = Encoding.Unicode.GetBytes(username);
byte[] bytePassword = Encoding.Unicode.GetBytes(password);
NetworkStream stream = client.GetStream();
stream.Write(username, 0, byteUsername.Length);
stream.Write(password, 0, bytePassword.Length);
//if offset != 0, the code always return ArgumentOutOfRangeException
和服务器端的读者:
return Encoding.Unicode.GetString(buffer, 0, buffer.Length)
经过长时间的搜索,我找到了解决方案,但它只能处理两个字符串;第三个+字符串将与第二个字符串组合在一起。我需要为其他功能发送至少 4 个字符串。
这是更新的阅读器代码:
List<string> list = new List<string>();
int totalRead = 0;
do
{
int read = client.GetStream().Read(buffer, totalRead, buffer.Length - totalRead);
totalRead += read;
list.Add(Encoding.Unicode.GetString(buffer, 0, totalRead));
} while (client.GetStream().DataAvailable);
我不太明白这段代码。它如何知道哪些字节是第一个字符串的一部分?size
ofRead()
参数是length-totalRead
which is length - 0
,它应该返回整个缓冲区对吗?
大佬们有什么解决办法吗?
之前谢谢