对于一般的协议消息交换,可以容忍一些丢包。 UDP over TCP有效多less?
如果你有一个TCP连接可能太慢,UDP连接可能太不可靠的情况,你使用什么? 那里有各种标准可靠的UDP协议,你有什么经验? 请每个回复讨论一个协议,如果其他人已经提到了你使用的那个,那么就要考虑投票,如果需要的话可以使用评论来详细说明。 我对这里的各种选项感兴趣,其中TCP处于一个规模的一端,UDP处于另一端。 各种可靠的UDP选项都可用,并且每个都带有一些TCP到UDP的元素。 我知道TCP通常是正确的select,但是有一个替代scheme的列表通常可以帮助我们得出这个结论。 像Enet,RUDP等build立在UDP上的东西有各种各样的优点和缺点,你用过它们,你有什么经验? 为了避免疑问,没有更多的信息,这是一个假设性的问题,我希望能够得出一份回应清单,详细列出需要作出决定的人可以使用的各种选项和备选scheme。
比方说,我正在运行一个简单的服务器,并从客户端accept()一个连接。 什么是最好的方式来告诉客户端何时断开连接? 通常情况下,客户端应该发送一个closures命令,但是如果手动断开连接或者完全失去networking连接呢? 服务器如何检测或处理这个?
我正处于编写一个新的Windows服务应用程序的devise阶段,该应用程序接受长时间连接的TCP / IP连接(即,这不像HTTP那里有很多短连接,而是客户端连接并保持连接数小时或数天甚至几周)。 我正在寻找想法来devisenetworking架构的最佳方式。 我将需要启动至less一个线程的服务。 我正在考虑使用asynchronousAPI(BeginRecieve等..),因为我不知道有多less客户端,我将连接在任何时候(可能是数百)。 我绝对不想为每个连接启动一个线程。 数据将主要从我的服务器stream出到客户端,但是偶尔会有一些来自客户端的命令。 这主要是一个监视应用程序,在这个应用程序中,我的服务器定期向客户端发送状态数据。 任何build议最好的方式使这个尽可能的可扩展性? 基本工作stream程 谢谢。 编辑:要清楚,我正在寻找基于.net的解决scheme(C#如果可能,但任何.net语言将工作) BOUNTY NOTE:为了获得赏金,我期待的不仅仅是一个简单的答案。 我需要一个解决scheme的工作示例,作为我可以下载的一个指针或一个简单的例子。 它必须是基于.net和Windows的(任何.net语言都可以) 编辑:我想感谢每个人给出了很好的答案。 不幸的是,我只能接受一个,而我select接受更为人熟知的Begin / End方法。 埃萨克的解决scheme可能会更好,但是这个问题还是很新的,我不知道如何解决问题。 我已经提出了所有我认为很好的答案,希望我能为你们做更多的事情。 再次感谢。
TCP连接上的“通过对等方重置连接”错误的含义是什么? 这是一个致命的错误还是只是一个通知或与networking故障有关?
我试图实现一个TCP连接,从服务器端一切正常,但是当我运行客户端程序(从客户端计算机),我得到以下错误: java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432) at java.net.Socket.connect(Socket.java:529) at java.net.Socket.connect(Socket.java:478) at java.net.Socket.<init>(Socket.java:375) at java.net.Socket.<init>(Socket.java:189) at TCPClient.main(TCPClient.java:13) 我试图改变套接字号码,以防使用,但无济于事,有没有人知道是什么原因导致这个错误及如何解决它。 服务器代码: //TCPServer.java import java.io.*; import java.net.*; class TCPServer { public static void main(String argv[]) throws Exception { String fromclient; String toclient; ServerSocket Server = new ServerSocket(5000); System.out.println("TCPServer Waiting for […]
我试图debugging一个摩托罗拉Droid的应用程序,但我有一些困难通过USB连接到设备。 我的开发服务器是在Hyper-V中运行的Windows 7 64位虚拟机,因此无法通过USB或guest虚拟机直接连接。 我安装了几种不同的USB-over-TCP解决scheme,但是由于ADB监视器反复报告“设备监视器无法开始监视”,连接似乎有问题。 有没有一种方法可以直接从开发机器上的客户端连接到使用networking而不是USB连接的设备上的守护进程,或者可能有其他可行的选项?
如何检测客户端与我的服务器断开连接? 我的AcceptCallBack方法中有以下代码 static Socket handler = null; public static void AcceptCallback(IAsyncResult ar) { //Accept incoming connection Socket listener = (Socket)ar.AsyncState; handler = listener.EndAccept(ar); } 我需要找到一种方法来尽快发现客户端与handler Socket断开连接。 我试过了: handler.Available; handler.Send(new byte[1], 0, SocketFlags.None); handler.Receive(new byte[1], 0, SocketFlags.None); 当你连接到一个服务器并想要检测服务器什么时候断开,但是当你是服务器并且想要检测客户端断开时它们不工作时,上述方法是有效的。 任何帮助将不胜感激。
同一台计算机上的两个应用程序可以绑定到相同的端口和IP地址吗? 更进一步,一个应用程序可以监听来自某个IP的请求,另一个可以监听另一个远程IP的请求吗? 我知道我可以有一个应用程序开始两个线程(或叉)具有类似的行为,但可以有两个没有共同点的应用程序相同的?