Hej!
Jeg er ganske grøn i C#, og sidder nu med et sikkert ganske let problem.
Ud fra et par tutorials vedr. c# remoting har jeg lavet et meget simpelt program.
Problemet består i det objekt som serveren laver, og som klienten kan tilgå og kalde metoder i, ikke har nogen reference til serverens metoder.
Jeg ønsker f.eks. at kunne ændre et tekstfelt på serveren, fra klienten, ved hjælp af dette remote objekt. Men hvordan får jeg en server reference ind det objekt?
Dette er serveren:
class Server
{
private Form1 form;
public Server(Form1 form)
{
this.form = form;
}
public void StartListening()
{
form.richTextBox1.Text = "Server started...";
TcpChannel tcpChannel = new TcpChannel(9998);
ChannelServices.RegisterChannel(tcpChannel, false);
Type commonInterfaceType = Type.GetType("MovieTicket");
RemotingConfiguration.RegisterWellKnownServiceType(commonInterfaceType, "MovieTicketBooking", WellKnownObjectMode.SingleCall);
}
}
Og klienten:
class client
{
public client()
{
TcpChannel tcpChannel = new TcpChannel();
ChannelServices.RegisterChannel(tcpChannel, false);
Type requiredType = typeof(MovieTicketInterface);
MovieTicketInterface remoteObject = (MovieTicketInterface)Activator.GetObject(requiredType, "tcp://localhost:9998/MovieTicketBooking");
MessageBox.Show(remoteObject.GetTicketStatus());
}
}
Objekt interfacet:
public interface MovieTicketInterface
{
string GetTicketStatus(string stringToPrint);
void SetServerTextField(string text);
}
Og objektet:
public class MovieTicket : MarshalByRefObject, MovieTicketInterface
{
public string GetTicketStatus()
{
MessageBox.Show(stringToPrint);
string returnStatus = "Ticket Confirmed";
return returnStatus;
}
public void SetServerTextField(string text)
{
//Hvilken instans kan jeg referere til ?!
}
}
Jeg håber meget i kan hjælpe. Tusind tak