Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 同样是.NET TCP客户端和线程_C#_Multithreading_Tcpclient - Fatal编程技术网

C# 同样是.NET TCP客户端和线程

C# 同样是.NET TCP客户端和线程,c#,multithreading,tcpclient,C#,Multithreading,Tcpclient,我在stackoverflow上读了很多关于TcpClient和多线程的书,但我想我没有找到一个明确的答案 我有一个具有3个相同线程的应用程序。 (对每个线程对象调用相同的方法) 每个线程创建自己的(本地)TcpClient实例,并打开到其服务器的tcp连接(不同的IP地址) 线程应该只在不同的服务器上执行相同的操作。 这3台服务器计算机运行相同的服务器软件 现在,3个线程“同时”启动一个服务器请求 TcpClient对象在每个线程上是否完全隔离? 或者可能是底层流不愿意共享 我有一种感觉,有时

我在stackoverflow上读了很多关于TcpClient和多线程的书,但我想我没有找到一个明确的答案

我有一个具有3个相同线程的应用程序。 (对每个线程对象调用相同的方法)

每个线程创建自己的(本地)TcpClient实例,并打开到其服务器的tcp连接(不同的IP地址)

线程应该只在不同的服务器上执行相同的操作。 这3台服务器计算机运行相同的服务器软件

现在,3个线程“同时”启动一个服务器请求

TcpClient对象在每个线程上是否完全隔离? 或者可能是底层流不愿意共享

我有一种感觉,有时候线程获取的数据不是来自“他的”服务器。 例如,所有线程都在轮询“就绪”标志。 只有服务器1准备就绪并设置了标志,但是线程1和线程2看到了标志集

我很有可能做错了事情。 但是,确定以这种方式在TcpClient对象上进行通信是安全的,这将有所帮助

非常感谢你的建议, 拉尔夫


PS:是的,我目前正在阅读关于C#8-)中多线程的书籍和文档

如果
TcpClient
实例是独立的,那么它们将不会共享任何状态-您可以根据需要使用任意多的
TcpClient
实例。如果数据在线程之间流动,我只能假设它在您自己的代码中。这里一个常见的混淆原因是捕获的变量(lambda/anon方法中的任何变量),在C#5之前,这些变量可以以偶然的审阅者可能无法预料的方式共享。如果没有更多的信息,我们不能说更多,但是不行:它们不应该相互干扰。

可能是服务器将响应发送回的端口有问题。Afaik源端口根据向服务器发送请求的程序自动确定。可能每个威胁之间的端口确定没有差异,因此三个同时运行的威胁在同一端口上得到了答案。。。但这只是我的猜测,我对TCP的东西不太感兴趣

+1是的-我看不出从一台服务器读取的标志值会从另一台服务器“流血”到另一台服务器的原因(假设没有愚蠢的全局/静态)。可能有Mcolli猜测的端口问题吗?你到底尝试了什么?我没有看到一个问题,我看到一个“这是真的吗?”的问题,但除非你给我们更多的信息,否则我们无法回答这类问题。除了不理解这个问题还有很多语法和拼写错误,这个问题还需要一些工作,这些工作需要作者在发布附加信息时自己完成。@all:很抱歉我的英语不好