我正在写一个简单的程序,使多个连接到不同的服务器进行状态检查。 所有这些连接都是按需build立的。 最多可同时创build10个连接。 我不喜欢每个套接字一个线程的想法,所以我将所有这些客户端套接字都设置为Non-Blocking,然后将它们放入一个select()池中。 它工作得很好,直到我的客户抱怨说,等待时间太长,才能得到目标服务器停止响应的错误报告。 我在论坛上查了几个主题。 有人build议可以使用alarm()信号或在select()函数调用中设置超时。 但我正在处理多个连接,而不是一个。 当发生进程宽度超时信号时,我无法区分所有其他连接之间的超时连接。 有无论如何改变系统默认的超时时间?
我以前使用过BeginAccept()和BeginRead() ,但是在Visual Studio 2012中,我想在我的套接字服务器程序中使用新的asynchronous( async , await )function。 我如何完成AcceptAsync和ReceiveAsyncfunction? using System.Net; using System.Net.Sockets; namespace OfficialServer.Core.Server { public abstract class CoreServer { private const int ListenLength = 500; private const int ReceiveTimeOut = 30000; private const int SendTimeOut = 30000; private readonly Socket _socket; protected CoreServer(int port, string ip = "0.0.0.0") { _socket = new Socket(AddressFamily.InterNetwork, […]
我正在写一个基于socket的程序。 我正在使用类ModelEvent通过套接字传递信息。 在ModelEvent里面,有一个types为(Object)的variablesobect。 对象本身是一个具有一些值的二维数组。 object[1][2] = 2; ModelEvent event = new ModelEvent("allo", object); dispatchEvent(event); object[2][3] = 2; ModelEvent event2 = new ModelEvent("you", object); dispatchEvent(event2); 假设数组对象填充了值1.第一个事件(事件)由客户端接收,并且数据是正确的。 通过数据发送的第二个事件是不正确的。 其数据与第一次调度相同。 “allo”和“you”是看我是不是两次阅读同一个事件,答案不是。 该string是正确的,但该对象不是,如果它已被更新的事件。 我发送第二个事件之前遍历数组,看看它是否在服务器端更新,它是。 但在客户端,即使事件本身发生变化,它仍然与第一次调度相同。
我使用的Apache公共的HTTP客户端调用URL使用POST方法发布参数,它很less抛出下面的错误。 java.net.SocketException: Broken pipe at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) at java.net.SocketOutputStream.write(SocketOutputStream.java:136) at java.io.BufferedOutputStream.write(BufferedOutputStream.java:105) at java.io.FilterOutputStream.write(FilterOutputStream.java:80) at org.apache.commons.httpclient.methods.ByteArrayRequestEntity.writeRequest(ByteArrayRequestEntity.java:90) at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499) at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114) at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096) at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398) 有人可以build议是什么导致这个exception,以及如何debugging?
我听说过HTTP保持活着,但现在我想打开与远程服务器的套接字连接。 现在这个套接字连接会一直保持打开状态,还是会有类似于HTTP保持连接的超时限制?
我有这个错误请求。 德语的最后一句话的意思是“Firefox无法连接到位于ws:// …….”的服务器。 服务器不会是我想的问题。 因为这里是nginx的configuration,因为我觉得有问题! server { server_name example.org; listen 80 default_server; root /var/www/web; location / # for symfony2 { try_files $uri @rewriteapp; } location @rewriteapp # for symfony2 { rewrite ^(.*)$ /app.php/$1 last; } location ~ ^/app\.php(/|$) { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param HTTPS off; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location ~ ^/socket […]
我知道没有一个硬性的答案,但是对于SSLencryption开销与未encryption的套接字通信,是否有一个通用的数量级估计近似值? 我只谈通信处理和连线时间,不包括应用程序级别的处理。 更新 有一个关于HTTPS与HTTP的问题 ,但我有兴趣在堆栈中寻找更低的。 (为了避免混淆,我用“数量级”这个词来代替;我把它当作非正式的术语,而不是正式的CompSci意义上的,当然,如果我正式的意思,作为一个真正的极客,十进制!;-) 更新 根据每个请求的评论,假设我们正在讨论长连接上的大尺寸邮件(范围从1k到10k)。 所以连接build立和数据包开销并不重要。
我正在研究一个运行在具有4G内存的Ubuntu机器上的Python应用程序的问题。 该工具将被用于审计服务器(我们更喜欢滚动我们自己的工具)。 它使用线程连接到许多服务器,许多TCP连接失败。 但是,如果我在启动每个线程之间添加1秒的延迟,则大多数连接都会成功。 我已经使用这个简单的脚本来调查可能发生的事情: #!/usr/bin/python import sys import socket import threading import time class Scanner(threading.Thread): def __init__(self, host, port): threading.Thread.__init__(self) self.host = host self.port = port self.status = "" def run(self): self.sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.sk.settimeout(20) try: self.sk.connect((self.host, self.port)) except Exception, err: self.status = str(err) else: self.status = "connected" finally: self.sk.close() def get_hostnames_list(filename): return […]
我想我理解这个选项的forms意义。 在我现在处理的一些遗留代码中,使用了该选项。 客户抱怨RST作为对FIN侧面的反应。 我不知道我可以安全地将其删除,因为我不明白它何时应该使用。 你能举个例子说明什么时候需要这个选项吗?
我已经阅读了大量有关UDP数据包大小的文章,但是一直没有得出什么是正确的结论。 许多服务将最大的UDP数据包限制为512字节(如dns) 假设互联网上的最小MTU是576,并且IPv4报头的大小是20个字节,并且UDP报头是8个字节。 这留下了548个字节用于用户数据 我将能够使用数据包的大小为548没有数据包碎片? 或者,DNS的创build者知道的是,他们为什么将其限制在512字节。 我可以安全地超过548字节吗?