草庐IT

socket_handle

全部标签

Java Socket 仍然是 Java 中 TCP/IP 编程的首选?

我需要使用基本的消息/响应协议(protocol)通过TCP/IP与服务器进行交互(因此对于每个请求我都将收到定义的响应)。在JVM生态中,我觉得JavaSocket是15年前的工具,但我想知道现在的JDK有没有更适合的工具?例如,对于Java套接字,如果没有收到响应,仍然需要手动使请求超时,这感觉真的很老套。那么JDK或JVM世界中有什么新东西吗? 最佳答案 不,现在有更好的选择,可以让您异步实现客户端/服务器,而无需额外的线程。看SocketChannel来自nio甚至更好AsynchronousSocketChannel来自n

sockets - Erlang gen_tcp 连接问题

简单的问题...这段代码..client()->SomeHostInNet="localhost"%tomakeitrunnableononemachine{ok,Sock}=gen_tcp:connect(SomeHostInNet,5678,[binary,{packet,0}]),ok=gen_tcp:send(Sock,"SomeData"),ok=gen_tcp:close(Sock).很清楚,只是我不太明白[binary,{packet,0}]是什么意思?有人愿意解释一下吗?疯狂的塞布 最佳答案 根据gen_tcp:co

sockets - 为什么TCP套接字编程需要两个套接字(一个欢迎套接字和一个连接套接字)而UDP只需要一个?

这是不是因为TCP连接是持久连接,所以服务器需要同时处理很多请求,因此需要不同的连接套接字?但是如果UDP传输完成,下一个连接将发起到同一个服务器套接字,所以UDP只需要一个套接字。这是我的推测。这是正确的吗? 最佳答案 原因是TCP有两种不同的状态需要控制,而UDP只有一种。当监听端口上的TCP连接时,网络堆栈需要跟踪端口号和你正在监听的接口(interface),以及传入的TCP连接请求的积压列表套接字,并将该状态保存在与您传递给listen()/bind()/accept()的套接字关联的内部数据结构中。只要套接字存在,该数据

xml - XML over Sockets 是好的还是坏的做法?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭5年前。Improvethisquestion一段时间以来,我一直在研究通过套接字传输xml的系统。而且我从来没有真正理解选择xml而不是套接字而不是自定义协议(protocol)的真正优势是什么。但我确实看到很多开发人员(特别是最初的网络开发人员)设置了这种实现(xmloversockets)。我知道这更“人类可读”(这是我一直听到的)。但是,Xml包含大量字符,导致出现大量消息,而实际上内容非常小且简单。消息大小各不相同,因此您需

sockets - 关于 UDP 服务器如何将响应发送回 UDP 客户端的困惑

我正在编写一个基于UDP的客户端服务器并且已经获得了相当多的代码,但是我对UDP服务器如何将响应发送回UDP客户端感到困惑,这是我目前的理解:假设一个UDP客户端想要和一个UDP服务器通信,所以它会向UDP服务器发送一个请求(使用在客户端打开的UDP套接字),现在这将到达UDP服务器的UDP模块,UDP模块将使用端口号识别UDP服务,并将该请求发送到该UDP服务/服务器。现在,由于UDP是一种无连接协议(protocol),因此与TCP不同,UDP服务器不会通过某些连接发送响应,相反,UDP服务器将从请求中提取源IP地址和源端口并将响应发送回客户端.我的困惑是,在服务器端,有一个绑定(

sockets - 使用辅助 IP 地址连接套接字

不久前,我能够通过以下步骤从给定接口(interface)上的主要或次要IP地址连接到给定目标地址。使用ipaddradd...将辅助IP地址添加到给定接口(interface),根据需要将套接字绑定(bind)到主要或次要地址,使用#2中绑定(bind)的主要或次要地址连接到目标IP地址。我最近将一台机器升级到Linux3.3.6,但它不再有效,但我不记得我试过的最后一个版本确实有效。有谁知道如何在较新的内核中做同样的事情?我刚刚在另一台机器上验证了2.6.23上的相同代码。UPDATE2ThisseemstoberelatedtotheNICdriver.With3.3.6and8

python - 如何正确使用python socket.settimeout()

据我所知,当您调用socket.settimeout(value)并设置一个大于0.0的浮点值时,该套接字将在调用时引发一个scocket.timeout,例如,socket.recv必须等待比指定值更长的时间。但假设我必须接收大量数据,并且必须多次调用recv(),那么settimeout对此有何影响?给定以下代码:to_receive=#anintegerrepresentingthebyteswewanttoreceivesocket=#aconnectedsocketsocket.settimeout(20)received=0received_data=b""whilerec

sockets - 数据包与 TCP 选择性确认的交互如何工作?

谁能解释一下数据包与TCP选择性确认的交互是如何工作的?我在维基百科上找到了定义,但我无法清楚地了解选择性确认与肯定确认和否定确认相比的真正作用。 最佳答案 TCP将它发送的信息分成多个段...本质上,段是不大于从另一端接收到的TCPMSS(最大段大小)的当前值的数据block。这些block具有递增的序列号(基于TCPsession中发送的总数据字节数),允许TCP知道什么时候在传输中丢失了东西;第一个TCP序列号是随机选择的,出于安全目的,它不应是伪随机数。大多数时候,您本地以太网的MTU小于MSS,因此他们可以在您确认之前向您

sockets - Akka IO.TCP 与 Json

我已经使用akka.io.tcp编写了客户端和服务器,但在读取客户端发送的消息时遇到了问题。我使用json发送消息。在客户端,我这样写消息:connection!Write(ByteString(msgString))在服务器端我有以下内容:overridedefreceive:Receive={caseReceived(data)=>listener!Json.parse(data.utf8String)casePeerClosed=>{contextstopself}}问题是akka一次读取多个消息,所以我得到一个无效的Json。有没有办法让akka一次只读一条消息?

C# Socket.receive 连续接收0字节,循环不阻塞

我正在尝试用C#编写一个最简单的多线程TCP服务器,它从多个客户端接收数据。每次有新的客户端连接时,都会建立套接字连接,并将套接字作为参数传递给新的类函数,然后while循环运行并接收数据,直到客户端连接上。这里的问题是“socket.receive”没有阻塞并且接收到0字节的数据。因此循环连续运行,不会在socket.receive处阻塞(代码中的“clientSocket.Receive(bb)”。)。我使用Chrome浏览器作为客户端进行测试。即使我使用任何其他客户端,TCP服务器的行为也保持不变。客户端只发送一次数据,但服务器不断收到0字节,while循环一直在运行。我正在粘贴