提问人:why.n0t 提问时间:9/22/2023 最后编辑:Ian Bushwhy.n0t 更新时间:9/22/2023 访问量:45
在 Fortran 和 WS2_32 中为 Socket 设置超时
Set Timeout for Socket in Fortran and WS2_32
问:
我在 Fortran (ifort) 中有一个客户端,它连接到套接字,发送一些数据并接收一些数据。 因为有时连接的服务器可能会停止或终止,所以我不想无限期地等待响应,并在接收端设置超时并在我这边处理问题。
我对服务器没有任何控制权。通信被阻塞,没有线程或任何东西。
我使用“WS2_32”进行套接字/连接处理,通信工作正常。问题在于设置超时。
我正在尝试使用“setsockopt”来设置超时
...
status = WSAStartup(WINSOCK_V2_2, wsaInfo)
...
connection = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)
...
status = setsockopt(connection,SOL_SOCKET,
+ SO_RCVTIMEO,Timeout,
+ sizeof(Timeout))
...
status = connect(connection,
+ %REF(connectionInfo),
+ SIZEOF(connectionInfo))
因为我尝试了不同的事情。使用 Integer(4) 或 Integer(DWORD) 不会编译。使用 Character(4) 进行编译,status 返回 0(成功),但我没有得到任何超时。Timeout
我尝试使用非常小的值或 ,这应该是毫秒。但它总是无限期地等待。10
'10'
答: 暂无答案
评论