我刚刚开始学习套接字编程,现在我正在尝试将 List<> 从客户端发送到服务器。
我读到我需要使用 BinaryFormatter 进行序列化和反序列化,但我只是不知道如何使用 NetworkStream 将其发送到服务器。
请帮忙,我们将非常感谢任何解释。非常感谢您。
下面是我的客户端代码
private void btnSendDataToServer_Click(object sender, EventArgs e)
{
int noOfMessage = Convert.ToInt32(tbMessageNo.Text);
try
{
serverStream = clientSocket.GetStream();
for (int i = 0; i < noOfMessage; i++)
{
clientList.Add(tbSendDataToServer.Text);
}
//send data to server
byte[] outStream = System.Text.Encoding.ASCII.GetBytes(?);
serverStream.Write(outStream, 0, outStream.Length);
serverStream.Flush();
//receive data from server
byte[] inStream = new byte[102400];
serverStream.Read(inStream, 0, (int)clientSocket.ReceiveBufferSize);
string returndata = System.Text.Encoding.ASCII.GetString(inStream);
msg("Data from Server : " + returndata);
}
catch(SocketException ex)
{ }
}
下面是我的服务器代码
byte[] bytesFrom = new byte[102400];
NetworkStream networkStream = clientSocket.GetStream();
networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);
dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom);
f.testQS.Enqueue(dataFromClient);
AppendText(f.testQS.Count().ToString() + " >> " + "From client-" + ClientNo + "--" + dataFromClient);
//send data to client
rCount = Convert.ToString(requestCount);
serverResponse = "Server to Client(" + ClientNo + ") " + rCount;
sendBytes = Encoding.ASCII.GetBytes(serverResponse);
networkStream.Write(sendBytes, 0, sendBytes.Length);
networkStream.Flush();
P.s.如果它是单个字符串,我这样做没有问题。但我想根据用户 noOfMessage 循环字符串 1st 并将其放入列表中。然后我会将列表发送到服务器。然后,Server会读取收到的List并显示List的数据。谢谢。
最佳答案
发送数据
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(serverStream, clientList);
serverStream.Close();
在服务器上接收
BinaryFormatter formatter = new BinaryFormatter();
clientList = (List<string>) formatter.Deserialize(networkStream);
关于c# - 如何使用 Tcp NetworkStream C# 发送和接收列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42298064/