我使用以下链接开发了一个套接字客户端/服务器程序
服务器套接字代码: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)
{
}
我在同一台计算机上测试了客户端和服务器,但我得到了同样的例外。
但是在下面的场景中,上面的代码运行良好。
提前感谢您的帮助。
答案 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函数调用的上述代码。