从Microsoft C#复制粘贴后的套接字客户端问题工作示例

从Microsoft C#复制粘贴后的套接字客户端问题工作示例,c#,sockets,C#,Sockets,我已经尝试过Microsoft C#dotNET套接字示例,并且已经有了同步和异步客户端示例,它们都可以在我的intranet上使用远程服务器。我的问题是,当我将异步客户端代码复制粘贴到应用程序中时,send()无法传递到服务器。没有报告错误,报告的发送字节数与请求的长度匹配。服务器按预期报告了连接,因此我被难住了,不知道问题是什么,也不知道如何调试它 由于代码是从MS示例中提取出来的,我不确定发布什么内容会有帮助,但下面是send调用和回调的源代码。检查显示cmdBytes[]的长度应为3字节

我已经尝试过Microsoft C#dotNET套接字示例,并且已经有了同步和异步客户端示例,它们都可以在我的intranet上使用远程服务器。我的问题是,当我将异步客户端代码复制粘贴到应用程序中时,send()无法传递到服务器。没有报告错误,报告的发送字节数与请求的长度匹配。服务器按预期报告了连接,因此我被难住了,不知道问题是什么,也不知道如何调试它

由于代码是从MS示例中提取出来的,我不确定发布什么内容会有帮助,但下面是send调用和回调的源代码。检查显示cmdBytes[]的长度应为3字节,而回调bytesSent的长度应为3字节

private static ManualResetEvent sendDone = new ManualResetEvent(false);
.... code to generate 3 cmdBytes[]
   sendDone.Reset();
   // Begin sending the data to the remote device.  
   mySocket.BeginSend(cmdBytes, 0, cmdBytes.Length, 0, new AsyncCallback(SendCallback), mySocket);
   sendDone.WaitOne();
....
   private static void SendCallback(IAsyncResult ar)
   {
      // Retrieve the socket from the state object.  
      Socket client = (Socket)ar.AsyncState;
      // Complete sending the data to the remote device.  
      int bytesSent = client.EndSend(ar);        // debugger reports bytesSent is 3
      // Signal that all bytes have been sent.  
      sendDone.Set();
   }

更新后,进一步调查发现问题出在connect()上,可能与此代码无关。

将服务器接收部分代码放到服务器上,我认为您向服务器发送了字节,但没有正确处理接收字节。我非常熟悉这些示例,并且非常有调试网络问题的经验。我几乎可以肯定数据是发送的,因为我们没有收到任何异常。如果您没有获得连接,您可能会得到一个异常,客户端将为null,并且可能会在send方法中得到一个异常。因此,错误可能在服务器中,或者您连接到的服务器与正在使用的服务器不同。你可以打开putty而不是服务器来查看是否真的收到了邮件。谢谢你的评论,因为他们为我指明了正确的方向,也就是说发送没有问题!我已经看到插座在连接后会自动断开!我应该编辑这篇文章还是关闭它然后开始一篇新文章?