寻找实现C#程序的最佳方法,该程序将能够通过TCP(客户端服务器?)进行监听和发送。我对网络方面的东西还很陌生,所以我将简要解释一下我想做什么,以及我是如何想的。我想要的:好的,所以我制作的GUI有一个文本框和2个按钮(实际上更复杂,但如果我能让它工作,我就能让我的工作)文本框将保存从TCP读取的值,对于我是从远程电源监控系统读取的电压(整数)。在GUI上,用户应该获得当前电压的最新刷新,并且按钮用于将电压增加或减少1。因此系统需要始终倾听,并且能够交谈。我认为可行的方式:让程序始终监听更新的值以放入txt框中。如果用户按下按钮,按钮中断将使TCP1)停止监听,2)发送增加/减少请求,
在此介绍文章中:http://tldp.org/HOWTO/TCP-Keepalive-HOWTO/overview.html声明TCPkeepalive的原因是:防止因网络不活动而断开连接检测死亡节点所以在我的应用程序中,有一个繁忙的TCP套接字。数据包经常在两个对等点之间来回发送-因此有大量数据包设置了ACK标志。应用程序协议(protocol)使用其他方式进行死对等检测。对于上述情况,TCPkeepalive是否仍然是必要的? 最佳答案 没有。TCPkeepalive实际上是一个0字节长的tcp数据包。如果您可以确定您的应用程
我有一个设备通过TCP每20毫秒发送一次数据。我有一个连接到此设备的应用程序,启动套接字通信。我的应用程序在一个单独的线程上监听并在数据准备好时尽快读取数据,将数据放在一边,然后由其他线程处理它。设备通过以太网电缆直接连接到计算机。我看到一个奇怪的问题,我试图理解为什么几乎每分钟一次,从设备接收数据包需要大约50毫秒。我做了一个阻塞读取,它会尝试读取一秒钟,并且会在数据准备好时尽快完成,通常它需要大约20毫秒,正如我所期望的那样,但就像我之前说的那样,有时它需要50毫秒,即使它是非常罕见(3000分之一)。我注意到的是延迟数据包之后的数据包立即到达,所以这让我觉得网络层有一些延迟。我还
我正在开发一个相当复杂的应用程序,我将直接进行设置,以便解释工作流程。客户端连接到中央服务器(监控、管理和维护)使用TwistedFramework构建的本地HTTP服务器(提供1个配置Web界面、1个设备管理界面和1个操作界面)用于从中央服务器或http服务器(打印、上传等)在主机上执行各种命令的服务器未确认GUI应用程序替换操作界面我正在考虑在进程和客户端之间建立一个TCP/IP通信(可能2和3将是服务器/客户端混合体,以便实现轮询效果并对数据进行操作)我的问题是:这是应用之间通信的最佳方式吗?应用程序的每个实例将仅由单个用户使用,那么如果没有应用程序读取/写入大数据,只有命令和元
我有一个C#应用程序,它监听传入的TCP连接并从先前接受的连接接收数据。请帮助我是否使用Threadpool或Async方法来编写程序?请注意,一旦连接被接受,它不会关闭它并继续从该连接接收数据,同时它接受更多连接 最佳答案 当代码运行时间少于半秒并且没有大量会阻塞线程的I/O时,线程池线程的效果最佳。这与您描述的情况完全相反。此处强烈指示使用Socket.BeginReceive()。在操作级别和框架上都经过高度优化,您的程序使用单个线程来等待所有挂起的读取完成。扩展以处理数千个事件连接是非常可行的。干净地编写异步代码可能非常困难
我有一台机器,我需要连接到它以将数据检索到文本文件中。为此,我有机器的IP地址、端口号、用户名、密码。现在我正在尝试连接到机器但我不知道在哪里传递要在我的C#代码中连接的机器的用户名和密码。请帮帮我。 最佳答案 评论已经给出了答案,总结一下:对于TCP协议(protocol),重要的只是如何连接A和B来实现数据传输。任何超出成功连接的事情都取决于您使用的内部应用程序协议(protocol)您需要服务的描述以及发送和接收的内容您从问候语“这里是客户”开始。这就是我假设的如何传输用户名和密码的方式。例如,在您的“这里是客户”消息之后,服
我创建了一个TCP服务器程序,它绑定(bind)、监听并接受来自特定IP地址和端口号的连接。在第一次连接期间:服务器正在接受来自客户端的SYN数据包并将ACK发送回客户端。稍后从客户端获得ACK。最后,Client与服务器进行RST。在第二次连接期间,客户端正在向从服务器发送SYN数据包,但没有来自服务器的ACK。我认为在使用相同的ip地址和端口号的第二次连接期间不可能存在绑定(bind)。是否可以在第二个连接中绑定(bind)同一个ip地址和端口号?服务器:SOCKETsock;SOCKETfd;uint16port=52428;//Iamalsousingnonblockingmo
我正在为回合制游戏编写游戏服务器。一个标准是游戏需要对所有玩家尽可能公平。到目前为止它是这样工作的:每个客户端都有一个TCP连接。(如果相关,连接通过WebSockets打开)在运行时,通过epoll持续检查传入的套接字消息。遍历准备好读取套接字的客户端:阅读来自客户的所有消息。更新每条消息的内部游戏状态。将传出消息排队到受影响的客户端。在每个“窗口”结束时(转):遍历客户端并将所有排队的传出消息写入它们的套接字我对公平的关注提出了以下问题:我向客户发送消息的顺序重要吗?在所有套接字上调用write()对我的程序来说只需要几分之一秒,但是如果我对客户端列表进行排序,在底层操作系统或网络
我知道您可以限制每个ip、每个时间间隔等的连接数,但我想要的是数据量。我正在托管一个套接字服务器,我认为与其让它执行检查泛洪的处理,不如将其卸载到防火墙。我知道你可以防止synflooding攻击,就像这里提到的:http://www.cyberciti.biz/tips/howto-limit-linux-syn-attacks.html例如:#Limitthenumberofincomingtcpconnections#Interface0incomingsyn-floodprotectioniptables-Nsyn_floodiptables-AINPUT-ptcp--syn-
我目前正在开展一个项目,该项目需要在IE中挂接TCP发送和接收API以监控TCP数据。它在IE9和IE10上运行良好。但它停止在IE11上工作。经过一番研究,我发现IE11使用WSASend和WSARecv来发送和接收数据。所以我决定HookWSASend和WSARecv。WSARecv是一个重叠操作。有3种方法可以获取重叠操作的结果。当使用重叠操作时,它们要么有关联的事件、完成例程,要么与I/O完成端口关联。我检查了IE11调用WSARec时的重叠结构,发现事件和完成例程都是NULL,所以我假设IE11使用IO完成端口来获取重叠操作的结果。问题是GetQueuedCompletion