【发布时间】:2015-08-29 23:13:12
【问题描述】:
问题来了, 我有以下场景编码。
- 在线程 A 中运行的 TCP 侦听器连接到客户端 1
- 在线程 B 中运行的第二个 TCP 侦听器连接到多个客户端,每个客户端都在不同的线程中。我的意思是只要客户 在线程 B 中接受,创建一个不同的线程以供进一步 处理等待从“TCP”获取数据的客户端 监听器 B" 在 while 循环中
我想做什么以及我面临的问题是,
我想将客户端 1 从线程 1 收到的数据传递给线程 2 中的客户端。
我认为正在发生的事情,
由于我在线程 1 中从客户端 1 获取数据时处于线程 1 中,因此当我尝试在线程 2 中向客户端发送数据时,我总是得到连接错误。
这是线程问题吗?
我该如何克服它的问题?
编辑
这是一个窗体应用程序
两个 TCP 侦听器都在同一个应用程序中运行。
我正在维护一个连接到 TCP 侦听器 B 的 TcpClients 列表,当我从线程 A 获取一些数据时,我从我维护的该列表中获取 TCP 客户端并尝试发送数据,但不能作为连接状态变成假的。
【问题讨论】:
-
不使用线程而是使用异步套接字会更简单。对于这种数据传输,您可以只使用事件。
-
你想怎么沟通?过一个港口?或者这一切都在一个内存空间中?
-
@Henk 这一切都在一个内存空间中
-
@sami 我尝试使用acceptclient 和beginread 回调,但由于某种原因,当我调试时,接收函数被触发,但是当我尝试不调试时,接收回调永远不会被触发!! !!
-
好吧,没有代码我们还能说什么?该图非常有用。一般来说,套接字编程非常困难,并且在没有等待的情况下使用异步 IO 会增加很多问题。
标签: c# multithreading tcpclient tcp-ip tcplistener