c# socket connect 连接超时问题。

sa.Blocking = false;
            for (int i = 0; i < 10; ++i)
            {
                try
                {
                    sa.Connect(ip, port);
                }
                catch
                {
                }
                Thread.Sleep(100);
                if (sa.Connected)
                {
                    break;
                }
            }

            sa.Blocking = true;
            if (sa.Connected == false)
            {
                connIsok = false;
                return connIsok;
            }

connect 不能设置超时 时间 。简单 一点 。设置非阻塞。不过没有测试网络延迟很厉害的网络情况。

时间: 2024-10-18 00:03:16

c# socket connect 连接超时问题。的相关文章

VC socket Connect 超时时间设置

设置connect超时很简单,CSDN上也有人提到过使用select,但却没有一个令人满意与完整的答案.偶所讲的也正是select函数,此函数集成在winsock1.1中,简单点讲,"作用使那些想避免在套接字调用过程中被锁定的应用程序,采取一种有序的方式,同时对多个套接字进行管理"(<Windows网络编程技术>原话).使用方法与解释请见<Windows网络编程技术>. 在使用此函数前,需先将socket设置为非阻塞模式,这样,在connect时,才会立马跳过,

ftpClient的连接超时设置

FTPClient ftpClient = new FTPClient(); ftpClient.setConnectTimeout(10*1000); // 10s,如果超过就判定超时了 ftpClient.connect(hostName, 21); http://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/SocketClient.html#setConnectTimeout(int) Class

redis远程连接超时

 今天在用jedis连接远程的redis时,抛出连接超时异常:connect timed out.具体信息如下: Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: connect timed out at redis.clients.jedis.Connection.connect(Connectio

Socket Connect问题

一.非阻塞Connect对于Select时应注意的问题二.linux客户端socket非阻塞connect编程 一.非阻塞Connect对于Select时应注意的问题 对于面向连接的socket(SOCK_STREAM.SOCK_SEQPACKET),在读写数据之前必须建立连接. 建立连接的过程: 首先,服务器端socket必须在一个客户端知晓的地址(IP和端口号)进行监听,也就是说,创建socket之后,必须调用int bind(int sockfd, const struct sockadd

转 MySQL连接超时

在负载较重的MySQL服务器上,有时你偶尔会看到一些连接超时的错误,诸如: Can’t connect to MySQL server on ‘mydb’(110).如果当时你有多个连接请求,你会发现其它连接却没问题.这类问题开始时很不显眼,且长时间来看几乎可以忽略不计(注:次数不 多),类似于百万分之一的发生率,但是在服务器负载不断加重时,可能出现的频率将有所上升. 如果你对连接进行计时你会发现,连接一般都接近3-9秒.这个时长有时也很诡异,多年前我就曾遇到过一次,当时数据库请求连接被重置,S

Java网络编程从入门到精通(16):客户端套接字(Socket)的超时

客户端套接字的超时(timeout)就是指在客户端通过Socket和服务器进行通讯的过程中,由于网络延迟,网络阻塞等原因,造成服务器并未及时响应客户端的一种现象.在一段时间后,客户端由于未收到服务端的响应而抛出一个超时错误; 其中客户端所等待的时间就是超时时间. 由于生产超时错误的一端都是被动端:也就是说,这一端是在接收数据,而不是发送数据.对于客户端Socket来说,只有两个地方是在接收数据:一个是在连接服务器时;另一个是在连接服务器成功后,接收服务器发过来的数据时.因此,客户端超时也分为两种

boost::asio设置同步连接超时

boost::asio设置同步连接超时 CSDN上求助无果,只好用自创的非主流方法了.asio自带的例子里是用deadline_timer的async_wait方法来实现超时的,这种方法需要单独写一个回调函数,不利于把连接和超时封装到单个函数里.传统的Winsock编程可以先把socket设为非阻塞,然后connect,再用select来判断超时,asio也可以这样做,唯一“非主流”的是asio里没有一个类似select的函数,所以得调用原始的Winsock API,也就牺牲了跨平台: #inc

Java设置Client Socket链接Server超时时间

Java设置Client Socket链接Server超时时间 学习了:http://blog.csdn.net/tterminator/article/details/52494141 http://blog.csdn.net/fw0124/article/details/41227543 整理如下: Socket client = null; // 创建一个流套接字,连接到指定主机上的指定端口号 // client = new Socket(IP, PORT); client = new S

accpet和connect设置超时

三次握手 TCP连接建立的开始是三次握手,通过三次交互确认连接成功,在客户端调用connect时,客户端发送sync消息给服务端,服务端收到sync消息后,返回一个ack+sync,并等待ack,客户端收到ack+sync后,返回一个ack,connect返回,服务端收到ack后,accept返回,如下图所示: connect超时设置 如果connect连接的服务端不存在,或是异常了,会出现什么情况,可能有以下几种情况: 服务端返回连接错误 等待系统默认的75秒超时 上述两种情况都是不可控的,因