gpt4 book ai didi

c# - 通过Tcp/IP将客户端数据Queue发送到服务器端

转载 作者:可可西里 更新时间:2023-11-01 02:44:43 24 4
gpt4 key购买 nike

我想从客户端向服务器发送数据。有两个队列。在客户端和服务器端。我想让我的客户端连接到服务器并将客户端队列中的所有数据发送到服务器。在服务器端我想接受所有客户端并获取所有对象并添加到服务器端队列

客户端代码:

Queue<Person> clientQueue;   // This is the client side queue

IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 15884);
var client = new TcpClient();

while(!clientQueue.IsEmpty)
{
Person personObj = clientQueue.Dequeue();

client.Connect(serverEndPoint);
NetworkStream clientStream = client.GetStream();
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(clientStream, personObj);
clientStream.Flush();
}

服务器端:

Queue<Person> serverQueue;   // This is the server side queue

IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 15884);
TcpListener tcpListener = new TcpListener(ipEndPoint);


while(true)
{
TcpClient client = tcpListener.AcceptTcpClient();
NetworkStream clientStream = tcpClient.GetStream();
BinaryFormatter bf = new BinaryFormatter();
Person person = (Person)bf.Deserialize(clientStream);
tcpClient.Close();

serverQueue.Enqueue(person);
}

我知道上面的代码不起作用。我只想画出我的设计草图。有人可以把代码示例发给我吗?如何将客户端队列发送到服务器队列..

谢谢..

最佳答案

  1. 如果您使用的是 .net 4.0,对于服务器端和客户端的队列,您应该使用 BlockingCollection,对于早期版本,请结合使用队列AutoResetEvent。检查this .

  2. 在服务器端,您应该使用异步方法或只实例化一个新线程来处理每个新客户端,然后在该线程读取数据。喜欢:

    TcpClient client = tcpListener.AcceptTcpClient();
    ThreadPool.QueueUserWorkItem(new WaitHandle(HandleCleint), client);

    private void HandleClient(object clientObject)
    {
    TcpClient client = (TcpClient)clientObject;
    NetworkStream clientStream = client.GetStream();
    //handle the data here
    }

编辑:您在评论中声明:

I don't have an idea about how to change my program to send an entire queue to server side

数组或队列本身是一个对象:

//at your client side:
bf.Serialize(clientStream, persons);//assume persons is Queue<Person>

//at your server side:
Queue<Person> persons = (Queue<Person>)bf.Deserialize(clientStream);

关于c# - 通过Tcp/IP将客户端数据Queue发送到服务器端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6798979/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com