我刚刚开始学习套接字编程,现在我正在尝试发送List<>从客户端到服务器。
我已经读过我需要使用BinaryFormatter进行序列化和反序列化,但我只是不知道如何使用NetworkStream将其发送到服务器。
请帮助,非常感谢任何解释。非常感谢你的进步。
以下是我的客户端代码
layeredPane.add(token[0], 1);
以下是我的服务器代码
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)
{ }
}
P.S。如果它是单个字符串,我没有问题。但我想根据用户noOfMessage循环字符串1st并将其放在List中。然后我将列表发送到服务器。然后,服务器将读取收到的List并显示List的数据。谢谢。
答案 0 :(得分:2)
发送数据
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(serverStream, clientList);
serverStream.Close();
在服务器上接收
BinaryFormatter formatter = new BinaryFormatter();
clientList = (List<string>) formatter.Deserialize(networkStream);