我正在使用 TCP 通道连接创建具有 2 个不同控制台应用程序的聊天应用程序,但是当我运行客户端控制台或服务器控制台时,我得到“TCP 已注册”
我有 4 个代码项目。
- 界面
- 远程对象
- 客户
- 服务器
下面是接口代码:
using System;
public interface IRemoteObject
{
void GetData(string myString);
}
这是远程对象代码:
using System;
public class RemoteObject : MarshalByRefObject,IRemoteObject
{
//Server Method
public RemoteObject()
{
Console.WriteLine("Server text");
}
//Client Method
public void GetData(string myString)
{
Console.WriteLine(myString);
}
}
这是客户端代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using System.Threading;
namespace ClientConsole
{
public class Client
{
public static void Main()
{
ThreadStart client1 = new ThreadStart(ClientSide);
Thread client2 = new Thread(client1);
ThreadStart server1 = new ThreadStart(ServerSide);
Thread server2 = new Thread(server1);
client2.Start();
server2.Start();
}
public static void ClientSide()
{
Console.WriteLine("ClientSide....");
TcpChannel ch2 = new TcpChannel();
ChannelServices.RegisterChannel(ch2, true);
IRemoteObject objRemoteRef = (IRemoteObject)Activator.GetObject(typeof(IRemoteObject), "tcp://127.0.0.1:2233/M");
while (true)
{
string x = Console.ReadLine();
objRemoteRef.GetData(x);
}
}
public static void ServerSide()
{
Console.WriteLine("ServerSide....");
TcpChannel ch2 = new TcpChannel(2233);
ChannelServices.RegisterChannel(ch2, true);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteObject), "M", WellKnownObjectMode.Singleton);
}
}
}
这是服务器代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using System.Threading;
namespace ServerConsole
{
public class Server
{
public static void Main()
{
ThreadStart server1 = new ThreadStart(ServerSide);
Thread server2 = new Thread(server1);
ThreadStart client1 = new ThreadStart(ClientSide);
Thread client2 = new Thread(client1);
server2.Start();
client2.Start();
}
public static void ServerSide()
{
Console.WriteLine("ServerSide....");
TcpChannel ch2 = new TcpChannel();
ChannelServices.RegisterChannel(ch2, true);
IRemoteObject objRemoteRef = (IRemoteObject)Activator.GetObject(typeof(IRemoteObject), "tcp://127.0.0.1:2333/M");
while (true)
{
string x = Console.ReadLine();
objRemoteRef.GetData(x);
}
}
public static void ClientSide()
{
Console.WriteLine("ClientSide....");
TcpChannel ch1 = new TcpChannel(2233);
ChannelServices.RegisterChannel(ch1, true);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteObject), "M", WellKnownObjectMode.Singleton);
Console.ReadLine();
}
}
}
请帮助,我在这里很新,我不确定我写的帖子是否正确,请理解。
谢谢