Je travaille sur un projet serveur/client. Le client demandera au serveur des informations et le serveur les renverra au client.C# envoyer recevoir un objet sur le réseau?
Les informations peuvent être une chaîne, un nombre, un tableau, une liste, un arrailiste ou tout autre objet. La solution que j'ai trouvée jusqu'à présent est de sérialiser l'objet (données) et de l'envoyer puis de le dé-sérialiser pour le traiter.
Voici le code du serveur:
public void RunServer(string SrvIP,int SrvPort)
{
try
{
var ipAd = IPAddress.Parse(SrvIP);
/* Initializes the Listener */
if (ipAd != null)
{
var myList = new TcpListener(ipAd, SrvPort);
/* Start Listeneting at the specified port */
myList.Start();
Console.WriteLine("The server is running at port "+SrvPort+"...");
Console.WriteLine("The local End point is :" + myList.LocalEndpoint);
Console.WriteLine("Waiting for a connection.....");
while (true)
{
Socket s = myList.AcceptSocket();
Console.WriteLine("Connection accepted from " + s.RemoteEndPoint);
var b = new byte[100];
int k = s.Receive(b);
Console.WriteLine("Recieved...");
for (int i = 0; i < k; i++)
Console.Write(Convert.ToChar(b[i]));
string cmd = Encoding.ASCII.GetString(b);
if (cmd.Contains("CLOSE-CONNECTION"))
break;
var asen = new ASCIIEncoding();
// sending text
s.Send(asen.GetBytes("The string was received by the server."));
// the line bove to be modified to send serialized object?
Console.WriteLine("\nSent Acknowledgement");
s.Close();
Console.ReadLine();
}
/* clean up */
myList.Stop();
}
}
catch (Exception e)
{
Console.WriteLine("Error..... " + e.StackTrace);
}
}
est le code client ici qui devrait renvoyer un objet
public object runClient(string SrvIP, int SrvPort)
{
object obj = null;
try
{
var tcpclnt = new TcpClient();
Console.WriteLine("Connecting.....");
tcpclnt.Connect(SrvIP, SrvPort);
// use the ipaddress as in the server program
Console.WriteLine("Connected");
Console.Write("Enter the string to be transmitted : ");
var str = Console.ReadLine();
Stream stm = tcpclnt.GetStream();
var asen = new ASCIIEncoding();
if (str != null)
{
var ba = asen.GetBytes(str);
Console.WriteLine("Transmitting.....");
stm.Write(ba, 0, ba.Length);
}
var bb = new byte[2000];
var k = stm.Read(bb, 0, bb.Length);
string data = null;
for (var i = 0; i < k; i++)
Console.Write(Convert.ToChar(bb[i]));
//convert to object code ??????
Console.ReadLine();
tcpclnt.Close();
}
catch (Exception e)
{
Console.WriteLine("Error..... " + e.StackTrace);
}
return obj;
}
J'ai besoin de connaître un bon serialize/sérialisation et comment l'intégrer dans la solution ci-dessus.
allouent bien que je suis nouveau à tout cela je me fous de ce chemin à parcourir pour atteindre et apprendre ce que je dois tout ce que je besoin est une solution servir/client qui me aider à envoyer des valeurs/objets au serveur et obtenir des résultats/réponses du serveur comme l'envoi d'une commande (chaîne) "getProcesses" et le serveur renverra un tableau ou un objet (Process [] processlist = Process.GetProcesses();) retour au client est-ce difficile? quelle est la meilleure façon de le faire? –
mais comment utiliser votre code avec mon code? –
Je vous recommande de lire l'un des tutoriels disponibles "Getting Started with WCF" comme: http://msdn.microsoft.com/en-us/library/ms734712(VS.100).aspx http://weblogs.asp.net/ralfw/archive/2007/04/14/a-truely-simple-example-to-get-started-with-wcf.aspx http://msdn.microsoft.com/fr-fr /library/ms730144.aspx –