草庐IT

java - 使用Java的TCP或UDP

抱歉,这么长的帖子。我已经对该主题进行了很多研究,并且让自己继续猜测应该走哪条路。提前感谢您的想法和投入。方案:用Java创建一个程序,该程序每0.2.0.5秒将包含简单“此时”或实时数据的数据包发送到大约5-7个客户端。(每个数据包最多只能容纳10个字节的数据)。服务器可以通过wifi或以太网连接。但是,客户端只能使用Wifi。客户端将不会向服务器发送任何数据包,因为它将仅显示从服务器检索到的数据。我的想法:我最初开始使用TCP作为传输层来创建服务器程序。这将在Java中使用ServerSocket类。我还使其成为多线程来接受多个客户端。由于种种原因,TCP听起来是个好主意。使用TC

java - 如何在与客户端建立 TCP 连接时建立 UDP 连接?

我有一个简单的服务器,它有一个主线程并接受客户端,并为每个客户端启动一个新线程。所以在这个线程中我想与客户端建立另一个连接(UDP),但我很困惑。如果有10个线程(客户端)在运行,并且所有10个线程都尝试打开具有相同端口的DatagramSocket,那会抛出SocketBindException吗?那我该怎么做呢? 最佳答案 客户端通过TCP连接到服务器。决定监听哪个UDP端口。将该信息发送到服务器通过TCP。产生一个线程,绑定(bind)到UDP端口成为UDP服务器服务器在TCP套接字上接收UDP端口信息。生成一个接收端口信息的

python - UDP 和 TCP 始终为一个客户端使用相同的 IP?

我为我的在线游戏制作了一个服务器(python,twisted)。从TCP开始,然后添加了UDP的持续更新(速度有了很大的提高)。但是现在,我需要将每个UDP套接字客户端与每个TCP客户端连接起来。我通过让每个客户端首先连接到TCP服务器,并获得一个唯一的ID来实现这一点。然后客户端将此ID发送到UDP服务器,同时连接它。然后我有一个TCP客户端的主列表(按唯一ID排序)。我的目标是能够通过TCP和UDP向同一个客户端发送消息。将UDP和TCP套接字链接到同一客户端的最佳方式是什么?我可以只获取新TCP客户端的IP地址,然后通过UDP将数据发送到该IP吗?或者客户端是否需要连接两次,一

networking - WebRTC中如何指定UDP或TCP协议(protocol)的选择

我了解WebRTC支持TCP和UDP协议(protocol)。但是,我看不到API中可以指定支持哪种协议(protocol)的位置。应用程序通常在哪里指定要使用的协议(protocol)选择? 最佳答案 当两个RTC/P客户端连接时,它们通过sessiondescription交换参数列表,其中包括ICEprotocol发现的连接选项.它们具有优先级,可以是UDP或TCP。提供哪些选项以及如何确定它们的优先级取决于客户端实现,即浏览器。由于由JavaScript应用程序控制的信号层传输这些icecandidates*,因此网站开发人

linux - 您能否在受控网络中优化/配置 TCP,使其变得与 UDP 一样快?

我正在考虑编写自己的可靠UDP实现(丢包的数据包排序和重传)。这是针对我的受控网络内的内部系统。我想知道是否有可能在Linux系统上将TCP优化到与UDP一样快?如果是,我将只使用super优化的TCP,而不用担心实现可靠的UDP。 最佳答案 您可以采取一些措施来使TCP适应您的特定需求。您可以增加最大缓冲区大小、更改拥塞算法等等。我认为在重新发明轮子之前真的值得尝试,特别是因为你似乎对你的内部网络有很好的控制。Thisarticle描述其中的一些事情。所有这些参数的另一个很好的信息来源是Linux源代码中的Documentatio

android - 如何解决 Android 上的 TCP/UDP 数据包 fragment 问题

全部:我对MTU设置不太熟悉,想知道如何处理通过TCP/UDP看到的fragment(我们通过Android应用程序通过蜂窝网络发送数据包)。我们看到很多数据包fragment从Android设备发送到服务器。我想获得有关该主题的更多信息:什么是MTU?我们可以使用哪些工具来查看或验证数据包fragment(Wireshark、tcpdump等)?我们如何在Android设备上使用ping/traceroute等标准工具(这有用吗)?提前致谢 最佳答案 MTU表示最大传输单元——它表示本地链路层将传输的最大数据包大小。例如,基于以太

tcp - 使用 SNMP 检查打开的 TCP/UDP 端口

我需要找到一个可以与“snmpwalk”一起使用的OID,它描述了哪些TCP/UDP端口在我的机器(本地主机)上是开放的和可用的关于此的类似帖子(here)是使用:snmpwalk-v2c-cpubliclocalhosttcpConnStatesnmpwalk-v2c-cpubliclocalhostudpLocalAddress但据我了解,这现在只显示打开的连接?无论如何,我的实验室因使用这些而被纠正错误。是否有任何其他OID可以显示可用的TCP/UDP端口?(我在Ubuntu中使用终端) 最佳答案 给你!snmpwalk-v2

java - 是否值得尝试在 UDP 之上构建我自己的可靠性?或者我应该只选择 TCP?

我从未尝试过在UDP上编程,但我知道它很快并且不可靠。我的问题是,如果我在UDP之上对可靠性进行编程,最终的性能是否会与使用TCP相同?IE。值得一试吗?要点:没有用UDP编程,第一次尝试实现可靠性。 最佳答案 有许多商业解决方案可以提供快速可靠的UDP。对于典型的安装,这些成本高达10万美元,您可以预期在硬件上花费大约相同的费用以使其稳定。编写可靠的UDP比听起来要难得多,因为您对丢包非常敏感。也就是说,只要您丢失的数据包很少,它就可以正常工作。对于简单的安装,TCP比尝试实现您自己的可靠UDP更快、更简单。如果您不需要可靠性,我

networking - 需要帮助决定何时在我的基本聊天网络中使用 UDP over TCP

我已经阅读了很多关于UDP与TCP的其他线程,但还没有真正找到任何能够正确回答我的设计问题的线程我将为一个项目开发的聊天网络将有3个主要应用程序:客户端、服务器和一个HUB(服务器)。HUB服务器是将所有服务器连接在一起形成网络的主要服务器。服务器将跟上正在创建的聊天室,换句话说,它将托管聊天室。客户端将用于连接到服务器以加入聊天室。现在我主要关心的是,在从客户端到客户端、服务器到服务器或服务器到客户端发送或执行请求时,我什么时候应该使用UDPoverTCP,反之亦然?注意:整个聊天网络项目100%基于文本,没有图形、网络摄像头、麦克风或文件共享功能。 最佳

java - UDP 数据包是否完整到达?

我知道TCP模拟流,因此通常在收到任何数据后立即开始读取。这就是为什么我使用这个片段来确保它在对它采取行动之前等待整个数据包intpacketSize=inputStream.readShort();bytepacketBuffer[]=newbyte[packetSize];intbyteTrans=0;while(byteTrans但是,对于UDP,我仍然需要解决同样的问题吗?我不这么认为,因为TCP基本上是通过将数据分解成更小的数据包并发送它来模拟流,而在UDP中,您可以更好地控制整个过程。我用的是UDP读取byte[]packetByte=newbyte[packetSize]