发送两个字符串,但通过tcp接收一个
本文关键字:tcp 一个 两个 字符串 | 更新日期: 2023-09-27 17:59:09
Hy伙计们,这就是我的客户端和服务器代码的样子:
客户端:
TcpClient client = new TcpClient();
client.Connect(IPAddress.Parse("192.168.1.12"), 5004);
NetworkStream stream = client.GetStream();
string username = loginName_txt.Text;
byte[] message = Encoding.ASCII.GetBytes(username);
stream.Write(message, 0, message.Length);
loginName_txt.Clear();
string password = password_txt.Text;
byte[] message1 = Encoding.ASCII.GetBytes(password);
stream.Write(message1, 0, message1.Length);
password_txt.Clear();
stream.Close();
client.Close();
服务器:
TcpClient mClient = (TcpClient)client;
NetworkStream stream = mClient.GetStream();
byte[] message = new byte[1024];
int recv = stream.Read(message, 0, message.Length);
username = Encoding.ASCII.GetString(message, 0 , recv);
updateUI("Username: " + Encoding.ASCII.GetString(message, 0, recv));
byte[] message1 = new byte[1024];
int recv1 = stream.Read(message1, 0, message1.Length);
password = Encoding.ASCII.GetString(message1, 0, recv1);
updateUI("Password: " + Encoding.ASCII.GetString(message1, 0, recv1));
stream.Close();
mClient.Close();
我试图将用户名和密码作为字符串从客户端发送到服务器,但问题是,我在服务器端将两个字符串作为一个字符串接收,存储在"message"中。我知道我应该以某种方式识别第一个字符串的末尾,放入第一个数组,然后从那里开始,将另一个放入第二个数组,但我不知道该怎么做。我想问你是否可以帮助我解决这个问题。
问题是您使用的是基于流的协议(TCP/IP),就好像它是基于消息的 后者是我通常更喜欢的——这意味着在开始读取数据之前,您总是确切地知道需要读取多少数据,这意味着您可以判断何时完成,并且在开始读取之前也知道要分配多大的数组。哦,这也意味着不需要转义任何内容,而如果您有一个分隔符,它可能自然出现在消息中,则需要转义。