草庐IT

Flask-Sockets

全部标签

sockets - 套接字未阻塞写入操作 : OpenSolaris

我有一个单元测试来检查阻塞和非阻塞套接字的行为——服务器写了一个很长的响应,在某些时候它不应该再写了,它写入block。基本上是一边写,另一边不读。在Solaris下,有时我会收到错误“空间不足”(写入75MB后),而不是在写入时阻塞:重现问题的程序:#include#include#include#include#include#include#include#include#include#include#include#include#includecharconst*address="127.0.0.1";#definecheck(x)do{if((x)0){intfd=-1;

sockets - Solaris - 我的进程监听所有接口(interface),但其他进程监听本地主机 :6011

我的服务器程序被设计为监听所有接口(interface),它也在监听工作。一种奇怪的行为正在发生。这意味着端口与sshd进程冲突。因为我需要让我的应用程序和sshd监听相同的端口范围。(例如:6000-6100)MyProg代码:MyPort=6011;#ifTARGET_HAS_IPV6_SUPPORT/*IPv6socket*/{structaddrinfo*ai=NULL;r=ipw_getaddrinfo("::",NULL,AF_INET6,SOCK_STREAM,IPPROTO_TCP,AI_PASSIVE,&ai);if(r==0){Create_listen_socke

sockets - Haskell 'timeout' 函数在应用于 'connect' 时不起作用

我的代码是这样的:connectFarEncipport=withSocketsDo$doaddrinfo如果无法连接到服务器,我希望超时两秒,但它不起作用。相反,抛出连接失败的异常,并退出程序。我应该如何处理这种情况以避免退出? 最佳答案 您从服务器得到了明确的答复,这产生了“连接被拒绝”。超时适用于您根本没有得到答复的情况。 关于sockets-Haskell'timeout'函数在应用于'connect'时不起作用,我们在StackOverflow上找到一个类似的问题:

sockets - 如何在tcp socket api程序中一个接一个地立即连接客户端

server.c#include#include#include#include#include#include#include#include#includeintmain(){structpollfdfdarray[5];intsfd,port,nsfd,n,clen,ret,i;charstr[100];structsockaddr_insadd,cadd;memset(str,0,sizeof(str));sfd=socket(AF_INET,SOCK_STREAM,0);if(sfd我为聊天服务器编写了一个程序,例如,如果连接了四个客户端,如果其中一个客户端发送消息,那么所有

sockets - TCP传输持续时间

我有两个应用程序通过TCP套接字进行通信。第一个接收,第二个发送。Firstapp:start=clock();recv();end=clock();当我运行应用程序时,(结束-开始)是150-200毫秒。(总是)第二个应用:while(!stop){start=clock();prepare_message();send();end=clock();}当我运行应用程序时,(结束-开始)是0.00毫秒。(总是)消息负载接近200-300字节,ping持续时间谢谢 最佳答案 发件人在准备就绪时发送消息。接收者必须等待消息,这就是额外时

sockets - TCP端口复制器

我有一个在TCP端口上监听连接并处理接收到的数据的服务。我现在需要拆分这些数据并在“实时”和“测试”机器上进行处理。我想让这成为每台机器的近乎完美的复制,我认为最简单的方法是接收到“复制器”服务,该服务只需将数据复制并重新传输到其他两个端点(使用其中一个能够将数据发送回源)是否有软件可以做到这一点?该平台是WindowsServer。我考虑过自己写这个,听起来并不太难,但如果解决方案已经存在,我更愿意使用它。谢谢 最佳答案 您打算如何解决以下两个问题:如果你真的有TCP协议(protocol),你肯定会在TCP开销上有所不同。因为它

sockets - java.net.ConnectException : Connection refused: connect 异常

尝试使用apache文件上传来上传文件,但出现此错误:java.net.ConnectException:Connectionrefused:connect昨天还好,今天就坏了 最佳答案 防火墙配置(我指的是端口转发,而不是访问规则)已更改或服务器进程未运行。 关于sockets-java.net.ConnectException:Connectionrefused:connect异常,我们在StackOverflow上找到一个类似的问题: https://s

sockets - RabbitMQ channel 和连接

我试图理解RabbitMQ中channel和连接的概念,我在高层次上理解它,连接是实现为TCP套接字到代理,channel是使用理智的真实连接进行通信的虚拟连接。因此channel通过相同的连接进行多路复用。但是在底层是如何实现的,TCPsockets是非阻塞的?我读过使用多个连接不会提高性能,为什么不呢?当一个channel使用连接时,我想这些调用是序列化的吧?那么多个连接是否可以让我更快地发送和接收数据。我知道我在这里遗漏了一些东西,所以我要求澄清。谢谢。 最佳答案 服务器或客户端是否使用非阻塞套接字是一个实现细节。需要高性能的

sockets - socket recv() 是否强制刷新 socket send() 缓冲区?

在我的应用程序中,我向服务器发送了两条小消息(类似memcached的服务)。在类似Python的伪代码中,这看起来像:sock.send("addsome-key0")ignored=sock.recv(...)sock.send("incrsome-key1")new_value=sock.recv(...)由于服务器支持即发即弃式写入,我可以优化此代码使其看起来更像:sock.send("addsome-key0noreply")sock.send("incrsome-key1")new_value=sock.recv(...)但是,这需要更长的时间——此版本平均需要40毫秒,而

sockets - 繁忙的 TCP 套接字是否需要 TCP Keepalive?

在此介绍文章中:http://tldp.org/HOWTO/TCP-Keepalive-HOWTO/overview.html声明TCPkeepalive的原因是:防止因网络不活动而断开连接检测死亡节点所以在我的应用程序中,有一个繁忙的TCP套接字。数据包经常在两个对等点之间来回发送-因此有大量数据包设置了ACK标志。应用程序协议(protocol)使用其他方式进行死对等检测。对于上述情况,TCPkeepalive是否仍然是必要的? 最佳答案 没有。TCPkeepalive实际上是一个0字节长的tcp数据包。如果您可以确定您的应用程