【c#】设置Socket连接、接收超时(转)

用到Socket,发现如果连接错误,比如Connect的端口不对,会造成很长时间的延时,程序就僵在那里,效果很不好;

在网上找到很方便的设置办法,分享如下:

Socket.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReceiveTimeout,1000);

设置Socket接收超时,时长为1000毫秒,这样1秒之后就会收到反馈,比之前强多了;

时间: 2024-10-12 19:28:20

【c#】设置Socket连接、接收超时(转)的相关文章

C# Socket连接请求超时机制

作者:RazanPaul 译者:Todd Wei 原文:http://www.codeproject.com/KB/IP/TimeOutSocket.aspx 介绍 您可能注意到了,.Net的System.Net.Sockets.TcpClient和System.Net.Sockets.Socket都没有直接为Connect/BeginConnect提供超时控制机制.因此,当服务器未处于监听状态,或者发生网络故障时,客户端连接请求会被迫等待很长一段时间,直到抛出异常.默认的等待时间长达20~30

PHP 设置 socket连接

摘要: 作者博文地址:https://www.cnblogs.com/liu-shuai/ nginx和fastcgi的通信方式有两种,一种是TCP的方式,一种是unix socket方式. socket方式不会走到tcp层,tcp方式则会走到ip层.因此,理论上说socket连接方式效率会更好一点. TCP和unix domain socket方式对比    TCP是使用TCP端口连接127.0.0.1:9000    Socket是使用unix domain socket连接套接字/dev/

设置socket接收和发送超时的一种方式

Linux环境设置Socket接收和发送超时: 须如下定义:struct timeval timeout = {3,0};  //设置发送超时setsockopt(socket,SOL_SOCKET,SO_SNDTIMEO,(char *)&timeout,sizeof(struct timeval)); //设置接收超时setsockopt(socket,SOL_SOCKET,SO_RCVTIMEO,(char *)&timeout,sizeof(struct timeval)); 另外

perl Socket接收超时设置

一般来说, IO::Socket::INET里的Timeout设置是对于conncet的 如果你想设置recv接收超时, 可以这样设置: 1 usr Socket: 2 ...... 3 setsockopt($socket, SOL_SOCKET, SO_RCVTIMEO, pack('l!l!', 1, 0)); 4 #注意这里pack有三个参数, 后面的1表示超时1秒, 最后的0你可以默认 5 #而前面的'l!l!', !表示64位平台 6 #如果你是用IO::Socket::INET他的

fcntl设置无阻塞的超时连接

场景描述:采用fcntl函数设置无阻塞套接字,尝试连接远程服务器,连接的时候出现如下的错误: if(fcntl(sock, F_SETFL, O_NONBLOCK) == -1)   return -1; printf("Connect return retval = %d,sock =%d\n",retval,sock);    retval = connect(sock, (struct sockaddr *)&edpinfo->servAddr, sizeof(st

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

STM32 硬件UART接收超时检测设置

STM32 硬件UART接收超时检测设置 -----------------本文作者"智御电子",期待与电子爱好者交流学习.---------------- 应用场景 在uart应用中有时候需要进行双工通信,主机需要对从机的数据进行接收超时检测,例如modbus协议,主机在接收从机数据在3.5个字节时间后认为数据包接收完毕.那在这种情况下,一般的做法是设置一个定时器,在每接收到一个字节时清零定时器重新计数,直到定时器超过3.5个字节时间后触发中断即默认数据包接收完毕. 以上的定时器设置

c# 创建socket连接辅助类-可指定超时时间

using AD.SocketForm.Model; using NLog; using System; using System.Net.Sockets; using System.Threading; namespace AD.SocketForm.Service { /// <summary> /// Socket连接类-可指定超时时间 /// 参考网址://www.cnblogs.com/weidagang2046/archive/2009/02/07/1385977.html ///