Linux 上套接字的连接超时是多少

发布于 2024-09-04 04:09:33 字数 104 浏览 8 评论 0原文

我有一个在 linux ubuntu 上运行的程序,它尝试使用 TCP 连接到服务器端口。 你能告诉我如何找出连接到 ubuntu 服务器套接字的客户端套接字的超时值吗?

谢谢。

I have a programming running on linux ubuntu which tries to connect to a server port using TCP.
Can you please tell me how can I find out that is timeout value for a client socket connecting to a server socket for ubuntu?

Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

人│生佛魔见 2024-09-11 04:09:33

最好的、可移植的解决方案是使用您自己的超时来确保您可以依赖已知值:

1) 在 connect() 之前,将客户端套接字设置为非阻塞。使用 ioctl()FIONBIO 标志或 fcntl()O_NONBLOCK 标志。在 Win32 下,使用 ioctlsocket()FIONBIO 标志。

2) connect() 到远程对等点:如果 connect() 成功,那么您就已连接。

3) 但是,如果connect()返回-1并将errno设置为EINPROGRESS(Win32下的WSAEWOULDBLOCK),只需select() 用于使用您自己的超时进行写入的套接字描述符。

The best, portable solution is to use your own timeout to be sure you can rely on a known value :

1) before connect()ing, set the client socket to be non-blocking. Use ioctl() and the FIONBIO flag or fcntl() and O_NONBLOCK flags. Under Win32, use ioctlsocket() and FIONBIO flag.

2) connect() to the remote peer : if connect() succeed, all right, you are connected.

3) However if connect() returns -1 and set errno to EINPROGRESS (WSAEWOULDBLOCK under Win32), just select() the socket descriptor for writing with your own timeout.

自在安然 2024-09-11 04:09:33

我首先查看 getsockopt(3) 手册页 (SO_RCVTIMEO)。但我确信你的问题不止于此。

I'd start by looking at the getsockopt(3) man page (SO_RCVTIMEO). However I'm sure there's more to your question than that.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文