客户端套接字程序引发异常
本文关键字:异常 程序 套接字 客户端 | 更新日期: 2023-09-27 18:27:17
我使用以下链接开发了一个套接字客户端/服务器程序
服务器套接字代码:http://msdn.microsoft.com/en-us/library/fx6588te.aspx
客户端套接字代码:http://msdn.microsoft.com/en-us/library/bew39x2a.aspx
开发完成后,我为服务器程序创建了一个服务,并将其部署在windows8服务器上。当我尝试使用客户端从我的开发机器(Win7)连接服务器程序时,我得到了以下异常
System.Net.Sockets.SocketException:由于目标计算机主动拒绝,因此无法建立连接10.80.33.77:8000位于System.Net.Socket.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)
{
}
我在同一台计算机上测试了客户端和服务器,但得到了相同的异常。
但在下面的场景中,上面的代码运行良好。
- 在调试模式下使用Visual Studio 2008启动服务,从Windows 8服务器启动客户端
- 在调试模式下使用Visual Studio 2008启动服务,从同一台开发机器启动客户端
提前感谢您的帮助。
在Socket服务器代码中,我在Main方法中创建了线程。但是在将其部署到服务器之后,线程启动代码就再也不会被调用。
最后,我将线程代码移到了与下面类似的OnStart方法中,它运行得很好。
protected override void OnStart(string[] args)
{
thread = new Thread(WorkerThreadFunc);
thread.Name = "My Worker Thread";
thread.IsBackground = true;
thread.Start();
}
下面的帖子帮助解决了这个问题:Windows服务持续运行
很抱歉没有复制代码的核心(问题)部分。代码是与调试器一起工作的,所以我从未怀疑过从Main函数调用的上述代码。