草庐IT

socket_desc

全部标签

PHP socket_write 在非阻塞套接字循环中只有最后一次写入成功

我希望通过套接字将数据发送到2个不同的端点。这是为了通过WebSockets和Push-Services发送消息(一个单独的工作实例)。由于我的应用程序不需要端点的响应,我将套接字设置为非阻塞,以便我的应用程序快速完成请求。问题是,只有最后一个socket_write完成了。第一个端点不接收数据。代码如下:foreach($workerInstancesas$workerInstance){//$workerInstancecontainsahostname$sock=socket_create(AF_INET,SOCK_STREAM,SOL_TCP);socket_set_nonbl

.net - 由 C# sockets CONNECTIONS

我正在尝试打开一个用于无线连接的套接字,据我所知,我需要打开端口8888。这个端口是什么?见链接:http://csharp.net-informations.com/communications/csharp-multi-threaded-server-socket.htm 最佳答案 如果你想问这个端口是什么意思,它没有注册,也没有被任何重要的人使用。IANA表示它曾在某个时候被一个"NewsEDGEserver"使用过,我什至无法通过谷歌搜索找到。这只是编写教程的人选择用作示例的随机端口。

sockets - 从 NodeJS 在 TCP 服务器上实现简单的身份验证

我几乎可以肯定我不了解TCP服务器的基本概念并且我没有将数据视为流,更糟糕的是,我可能没有很好地使用事件。我希望tcp服务器写入套接字“用户名:”,这样您就可以输入您的用户名(在netcat或telnet等tcp客户端上),然后tcp服务器必须将下一个数据视为用户名。到目前为止它确实有效(虽然我几乎可以肯定有更好的方法来做到这一点),接下来它应该写“密码:”这样你就可以输入你的密码,如果它是正确的,它应该然后验证凭据并做更多的事情......但是当你输入密码时,它会再次写入'password:'因为socket.write('password:');本身在另一个里面socket.on(

sockets - TCP_CORK 的影响

我有一个用例,我在一个方向上通过TCP/IP发送数据。我通过多个send()调用来执行此操作,这些调用具有非常小的(相对于以太网帧的大小)有效负载(没有任何send()标志-称呼)。为了防止我的小负载数据包膨胀到一个完整的以太网帧的大小,我认为使用TCP_CORK套接字选项会很好。这行得通,但是当实际比较使用TCP_CORK前后的情况时,我注意到这种聚合已经完成了。为什么会这样?正如我所说,我没有为send()(如MSG_MORE)或其他套接字选项使用任何标志,所以我原以为我的原始解决方案是浪费的。 最佳答案 如果您发送消息的速度非

java - Socket客户端/服务器的java程序中如何设置ECN(explicit congestion notification)位

我已经为服务器和客户端编写了基本的套接字程序。我想知道如何使用java将数据从服务器传输到客户端,以及当服务器发送数据时如果客户端缓冲区溢出,服务器应该减少它发送速率(拥塞应由tcp/ip中的ECN位指示)......感谢您的帮助。 最佳答案 ECN字段是IP的属性和Transportlayer.因此,我认为您不能从普通应用程序中设置它。一种方法是创建RAWSocket并在TCP/IPheader中使用适当的字段集(在您的情况下为ECN)自行制作数据包。您还应该注意,所有路由器和参与的终端主机都必须具有ECN支持。否则,路由器可能会

sockets - 断开连接后尽快断开流式 HTTP 连接

因此,我们正在努力实现的目标是维持从移动设备到我们的ErlangHTTP服务器的大量并发连接。移动设备当然可以有非常间歇性的连接,所以我们希望尽快丢弃死连接以避免它们的开销。现在,我不确定我们应该在哪个级别检测死连接。TCP有keepalive数据包,需要ACK。所以理想情况下,我们每15秒发送一个keepalive数据包,如果我们在接下来的15秒内没有收到ACK,那么我们将断开连接。但是,我不知道这在Erlang中是否可行。此外,我认为某些NAT、wi-fi路由器和移动网络可能会在一定时间内确认keepalive,如果我错了请纠正我。是这样吗?如果是这样,是否有任何TCP级别的替代方

Java Socket - 如何在 3 点之间发送和接收信息?

在我的应用程序中,多台PC将连接到服务器。服务器将接收消息然后发送到系统。系统可能会向服务器发回一条消息,而这条消息应该由服务器发送给PC。基本上是这样的:PC0------------------>服务器---->向系统发送PC消息。系统------>发送消息到PC0服务器---->PC0与PC1、2、3等相同...但是我该怎么做呢?我已经可以将PC消息发送到服务器和服务器发送到系统,如下所示:这是从ServerThread运行的:try{Socketsocket=serverSocket.accept();if(socket!=null){clientList.add(newCli

java - 与 Java 服务器的 PHP tcp 连接在 socket_read() 上挂起

我正在尝试创建一个PHP客户端来连接到一个简单的Java服务器,发送一些数据,然后接收返回的响应。Java服务器在与用Java编码的简单客户端交互时响应良好,但是一旦从PHP客户端发送请求,它就会在调用socket_read()时无限期挂起。如果这一行被注释掉,数据就可以正常到达,但如果没有注释掉,就好像Java服务器根本没有接收到数据。这与之前提出的问题非常相似:SimpleJavaTCPServerandPHPClientProblems但据我所知,我的代码在操作上与给出的解决方案几乎相同。Java服务器是多线程的,用于程序的其他部分,我不认为这是导致问题的原因。php脚本有一个U

java - Netty socket.shutdownOutput() 等同于避免 TCP RST?

我想知道是否有一种方法可以避免在Netty中关闭连接时设置TCPRST标志而不是TCPFIN标志,因为TCP接收缓冲区中仍有输入数据。用例是:客户端(用C语言编写)发送包含很多字段的数据包。服务器读取数据包,在早期字段上遇到错误,抛出异常。异常处理程序捕获异常,写入错误消息,并将关闭写入回调添加到写入future。问题是:接收缓冲区中的剩余数据导致Linux(或Java..)使用RST标志标记TCP数据包。这可以防止客户端读取数据,因为当它开始尝试时发现由于套接字关闭而导致读取错误。对于直接的Java套接字,我相信解决方案是在关闭之前调用socket.shutdownOutput()。

java.net.Socket > outputStream > BufferedOutputStream flush() 确认

有没有办法知道BufferedOutputStream线程的flush()方法何时或是否成功完成?在我的例子中,我使用它通过java.net.Socket发送一个简单的字符串。在下面的代码中,flush()方法与BufferedReader.read()方法并行运行,套接字输出立即被输入读取阻塞,从而导致类似于死锁的情况。我想做的是等待输出结束,然后开始读取输入。Socketsk=newSocket("192.168.0.112",3000);BufferedOutputStreambo=newBufferedOutputStream(sk.getOutputStream());bo.