新手问题给你。我有以下代码。我得到一个错误,因为一个对象必须传递给ClientRequest。但我不确定如何将流作为对象传递。将流转换为对象?
TcpClient _client = _listener.AcceptTcpClient();
NetworkStream _clientStream = _client.GetStream(); ThreadPool.QueueUserWorkItem(ClientRequest, _clientStream);
感谢
新手问题给你。我有以下代码。我得到一个错误,因为一个对象必须传递给ClientRequest。但我不确定如何将流作为对象传递。将流转换为对象?
TcpClient _client = _listener.AcceptTcpClient();
NetworkStream _clientStream = _client.GetStream(); ThreadPool.QueueUserWorkItem(ClientRequest, _clientStream);
感谢
为的ClientRequest声明,像这样有什么不妥,只要该代码:
public void ClientRequest(Object state) {
...
}
这个问题可能是不你不能通过流作为一个对象 - .net中的所有东西都是一个对象,因此投射到对象(这是“扩大”转换,因此不需要指定)应该不是问题。
我的猜测是你的ClientRequest需要传递一个NetworkStream或其他东西,它不会得到 - 它会得到一个对象,然后你需要将它转换为NetworkStream以便使用它正常。
基本上我想将网络队列传递给ClientRequest函数来读取和写入客户端。但ThreadPool.QueueUserWorkItem只会让我传递一个对象。 void ClientRequest(object request) { byte[] response = ObjectToByteArray(request); Console.WriteLine("\nClients request:\n{0}\n", Encoding.ASCII.GetString(request)); }
即时通讯新的这与我:) –
arbme
2010-07-11 21:00:01
@arbme:对。你只能传递一个对象。但是*一切*都是一个对象,所以你应该能够传递任何你喜欢的东西。诀窍是,在你的函数中,你想把它转换回你知道的东西 - 比如'NetworkStream ns =(NetworkStream)请求',并且在你的情况下使用'ns'而不是'request'。 – cHao 2010-07-11 21:16:42
@arbme:另外,对于是传递一个流还是一个字节数组或者其他东西,你似乎有点困惑。演员阵容可能会帮助你理清这一点。 – cHao 2010-07-11 21:19:35
请为ClientRequest添加代码或至少签名 – 2010-07-11 20:41:43