C# Socket.SetSocketOption在Mac OS上引发无效参数异常&;Linux,但在Windows上运行良好

C# Socket.SetSocketOption在Mac OS上引发无效参数异常&;Linux,但在Windows上运行良好,c#,.net,linux,sockets,.net-core,C#,.net,Linux,Sockets,.net Core,如果timeout设置为-1,则该方法在Windows上运行正常,但在Linux和Mac上失败,出现以下异常 System.Net.Sockets.SocketException(22):位于的参数无效 System.Net.Sockets.Socket.UpdateStatusAfterSocketerRor和RowException(SocketError 错误,位于的字符串callerName) System.Net.Sockets.Socket.SetSocketOption选项(Soc

如果timeout设置为-1,则该方法在Windows上运行正常,但在Linux和Mac上失败,出现以下异常

System.Net.Sockets.SocketException(22):位于的参数无效 System.Net.Sockets.Socket.UpdateStatusAfterSocketerRor和RowException(SocketError 错误,位于的字符串callerName) System.Net.Sockets.Socket.SetSocketOption选项(SocketOptionLevel optionLevel,SocketOptionName optionName,Int32 optionValue,布尔值 无声)在System.Net.Sockets.Socket.SetSocketOption(SocketOptionLevel)上 optionLevel、SocketOptionName、optionName、Int32 optionValue)

如果在mac和linux上将timeout设置为0,则不存在异常

1) 如果timeout设置为-1,它将在windows上执行不确定轮询。timeout=0会在windows上执行相同的操作吗

2) 在linux上是否将超时设置为0?它进行无限期投票吗

当我使用0表示超时时,应用程序会间歇性地失败

1) 如果timeout设置为-1,它将在windows上执行不确定轮询。意志 超时=0在windows上执行相同操作

2) 在linux上是否将超时设置为0?它进行无限期投票吗

是的,根据的文档,0和-1的值具有相同的行为

超时值,以毫秒为单位。默认值为0,即 指示无限的超时时间。指定-1还表示 无限的超时期


向Microsoft提交一个bug。该行为与文档不匹配。错误消息是不言自明的。“当另一个写入操作挂起时,无法调用BeginWrite方法。”-
BeginWrite()
用于异步写入。一次只能运行一个写入操作。那与阅读无关。在发出新的写入之前,必须等待写入完成。请显示您的实际代码,因为您在其中做了一些与
SetSocketOption()
无关的错误。谢谢。但在Windows上,如果该值设置为0,则应用程序会间歇性失败,并出现异常(例如无法同时对套接字进行读写)。我的应用程序是多线程应用程序。因此,需要确认0和-1是否执行相同或相同的操作not@subbaraoc“在Windows上,如果该值设置为0,则应用程序会间歇性失败并出现异常(无法同时执行套接字上的读写操作)”-这不是真正的错误,由于套接字是双向的,所以绝对允许同时读写。“真正”的错误消息是什么?您的代码中还有其他错误,但您的代码没有显示您的错误code@RemyLebeau我更新了这个问题,只有一个例外
Socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, timeout);
    System.NotSupportedException: The BeginWrite method cannot be called >when another write operation is pending.
      at System.Net.Security._SslStream.ProcessWrite(Byte[] buffer, >Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
      at System.Net.Security._SslStream.BeginWrite(Byte[] buffer, Int32 >offset, Int32 count, AsyncCallback asyncCallback, Object asyncState)