【发布时间】:2014-05-29 01:11:00
【问题描述】:
我基本上是在制作一个客户端/服务器应用程序和另一个从服务器(监视器)获取信息的软件。我正在这样做,并且必须使用 .NET 远程处理。
当我尝试在我的显示器和服务器之间建立连接时出现错误。我的服务器在端口 5000 上侦听连接,而我的远程处理在端口 5002 上侦听。
这就是我在服务器中收听的方式:
class Server : MarshalByRefObject, ServerInterface
{
public Server()
{
Listener();
}
private void Listener()
{
TcpListener listener = new TcpListener(IPAddress.Any, 5000);
listener.Start();
while (offline == false)
{
TcpClient client = listener.AcceptTcpClient();
}
}
}
这是我使用定义的接口构造的远程对象,它有一个返回列表的方法。
此代码位于控制台应用程序的主体中,以及创建一个新的服务器实例。
TcpChannel channel = new TcpChannel(5002);
ChannelServices.RegisterChannel(channel, false);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(Server),
"Server", WellKnownObjectMode.SingleCall);
Server s = new Server();
这就是我在显示器上构建 tcpchannel/remoting 的方式
IServer obj = (ServerInterface)Activator.GetObject(typeof(ServerInterface), "tcp://localhost:5002/Server");
但是当我尝试调用其中一种方法时,标题中出现错误,
List<string> cons = obj.getIPs(); //error line
各位有什么想法吗?
谢谢。
【问题讨论】:
-
听起来您正在创建多个 TCPChannel 实例,但如果没有完整代码则无法判断,请发布更多信息。
-
我 100% 确定没有创建其他 tcpchannel。唯一的其他侦听器是服务器在端口 5000 上侦听客户端。
-
也许另一个程序正在使用该端口?也许这可以帮助你:en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers