在构建简单的客户端-服务器应用程序时,我遇到了一个障碍
在环回测试它的功能时,我总是得到
无法建立连接,因为目标计算机主动拒绝它127.0.0.1:6001
这是它放置在主服务器程序中 Task.Run(() => ...)
internal void startListener ()
{
ListenerThread = new Thread(new ThreadStart(socketListener));
ListenerThread.Name = "Listener";
ListenerThread.Priority = ThreadPriority.AboveNormal;
ListenerThread.Start();
ComThreadDictionary.Add(ListenerThread.Name, ListenerThread);
}
public void socketListener()
{
_infrastructure_TcpServerAndClient.CreateNewTcpListenerANDstart();
while (true)
{
_infrastructure_TcpServerAndClient.tcpSocket = await _infrastructure_TcpServerAndClient.peerListener.AcceptSocketAsync();
byte[] StreamMessage = new byte[9632];
Thread.Sleep(500);
try
{
MessageLength = _infrastructure_TcpServerAndClient.GetMessageLength(ref
StreamMessage);
}
catch(Exception ex)
{
//"Remote host disconnected"
}
//Do stuff with message...
}
}
这就是嵌套在此方法中的内容 CreateNewTcpListenerANDstart()
CreateNewTcpListenerANDstart()
{
peerListener = new TcpListener(IPAddress.Any, ComSettings.Port);
peerListener.Start();
}
peerlistener在内部这样声明:_infrastructure_TcpServerAndClient
嵌套方法中的公共TcpListener peerListener收集消息
internal int GetMessageLength(ref byte[] StreamMessage)
{
int MessageLength;
MessageLength = tcpSocket.Receive(StreamMessage, 0, StreamMessage.Length,
SocketFlags.None);
return MessageLength;
}
编辑我已经用netcat检查了我的客户端,它可以正常工作,所以这很可能是服务器的故障
EDIT2,问题出在这个函数上_infrastructure_TcpServerAndClient()
,当我从中取出所有组件(peerListenr)
时,只需将它的base(socketListener()
)方法都可以正常工作->为什么呢?
好的,所以问题在此函数中非常简单,我在本地操作参数,导致peerListener.Start()
只能在本地启动,将Trick更改为静态...
CreateNewTcpListenerANDstart()
{
peerListener = new TcpListener(IPAddress.Any, ComSettings.Port);
peerListener.Start();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句