客户端套接字程序抛出异常

时间:2013-08-12 15:18:52

标签: c# sockets visual-studio-2008

我使用以下链接开发了一个套接字客户端/服务器程序

服务器套接字代码:http://msdn.microsoft.com/en-us/library/fx6588te.aspx

客户端套接字代码: http://msdn.microsoft.com/en-us/library/bew39x2a.aspx

开发完成后,我为服务器程序创建了一个服务,并将其部署在Windows 8服务器上。当我尝试使用客户端从我的开发机器(Win 7)连接服务器程序时,我得到了以下异常

  

System.Net.Sockets.SocketException:无法建立连接,因为目标计算机主动拒绝它10.80.33.77:8000   在System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)   在EODClient.AsyncClient.ConnectCallback(IAsyncResult ar)

抛出异常的客户端代码

   private static void ConnectCallback(IAsyncResult ar) {
    try
    {
        Socket client = (Socket) ar.AsyncState;
        client.EndConnect(ar); //Throwing an Exception here

    } catch (Exception e)
    {
    }

我在同一台计算机上测试了客户端和服务器,但我得到了同样的例外。

但是在下面的场景中,上面的代码运行良好。

  1. 在调试模式下使用Visual Studio 2008启动服务,从Windows 8服务器启动客户端
  2. 在调试模式下使用Visual Studio 2008启动服务,从同一个开发计算机启动客户端
  3. 提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在Socket服务器代码中,我在Main方法中创建了线程。但是在将它部署到服务器之后,线程启动代码永远不会被调用。

最后,我将线程代码移动到OnStart方法,类似于下面的方法,它工作正常。

 protected override void OnStart(string[] args)
 {
    thread = new Thread(WorkerThreadFunc);
    thread.Name = "My Worker Thread";
    thread.IsBackground = true;
    thread.Start();
 }

以下帖子有助于解决问题: Windows Service to run constantly

很抱歉没有复制代码的核心(问题)部分。代码正在使用调试器,因此我从不怀疑从Main函数调用的上述代码。