В моем классе .Net мы создаем простое приложение для чата.Наш профессор дал нам следующий пример кода:
СЕРВЕР:
TcpChannel channel = new TcpChannel(8085);
ChannelServices.RegisterChannel(channel);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteObject), "myobject", WellKnownObjectMode.Singleton);
Console.ReadLine();
КЛИЕНТ:
TcpChannel channel = new TcpChannel();
ChannelServices.RegisterChannel(channel);
RemoteObject remoteObject = (RemoteObject)Activator.GetObject(typeof(RemoteObject), "tcp://localhost:8085/myobject");
remoteObject.PrintMessage("Hello world!");
Console.ReadLine();
УДАЛЕННЫЙ ОБЪЕКТ:
[Serializable]
public class RemoteObject : MarshalByRefObject
{
public void PrintMessage()
{
Console.Write("Hello World!");
Console.ReadLine();
}
}
С этим кодом он в основном печатает сообщение «Hello World» на экране консоли сервера при каждом запуске клиента.Однако мы не понимаем, как это работает, поскольку он не полностью объяснил, что делает каждая строка.Мы знаем только о каналах.Суть в том, что с помощью этих кодов мы должны создать Windows-форму чата.Нам удалось заставить это приложение отправить сообщение, предоставленное пользователем, но мы не можем понять, как мы можем сделать это в форме Windows, так как мы не понимаем код, с которого нужно начинать.
Если кто-то можетпомогите нам с некоторыми указателями и рекомендациями о том, как мы можем сделать это в форме Windows, пожалуйста, сообщите нам об этом.Любой вклад приветствуется.
Если это поможет каким-либо образом, приведенный ниже код настолько далеко, насколько мы могли бы пойти на данный момент:
public partial class Form1 : Form
{
RemoteObject ro;
public Form1()
{
InitializeComponent();
TcpChannel serverChannel = new TcpChannel(8085);
ChannelServices.RegisterChannel(serverChannel, true);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteObject), "myobject", WellKnownObjectMode.Singleton);
}
private void btnSend_Click(object sender, EventArgs e)
{
try
{
ro = (RemoteObject)Activator.GetObject(typeof(RemoteObject), "tcp://" + txtIpAddress.Text + ":8085/myobject");
ro.PrintMessage(txtMessage.Text);
txtChatArea.AppendText(System.Environment.MachineName + ": " + txtMessage.Text + "\n");
txtMessage.Clear();
}
catch (SystemException error)
{
MessageBox.Show("Error 101: " + error.Message, "Connection Failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
Код выше в основном запрашивает IPАдрес второй стороны (стороны, с которой вы общаетесь), а затем предоставлены два текстовых поля - одно для отображения разговора (многоканальный), а другой для принятия сообщений.Этот код может отправить сообщение на сервер.Но, тем не менее, он не может принимать входящие сообщения от других сторон.