2015-07-15 1 views
1

Existe-t-il des moyens d'envoyer quoi que ce soit en plus des chaînes via un tcplistener? Parce que tous les exemples que j'ai vus jusqu'ici impliquent d'encoder une chaîne dans un tableau d'octets, de l'envoyer et de la décoder de l'autre côté. Et si je voulais envoyer un flottant, ou un int, ou quelque chose d'autre? Cela impliquerait-il de «convertir» un objet en un tableau d'octets et de l'envoyer? Je m'excuse si c'est une question stupide, mais j'essaie d'en apprendre plus sur le réseautage ici.Envoyer des objets via tcplistener

+0

Jetez un oeil à la réponse à cette question: http://stackoverflow.com/questions/3609280/sending-and-receiving-data-over-a-network-using-tcpclient vous trouverez une explication avec des exemples de code sur comment envoyer des données via TCP. – Robin

+0

Les exemples vous ont également montré comment envoyer des octets. Sinon, comment le résultat de GetBytes aurait-il pu être envoyé? – usr

+1

en tant que [Giorgi] (http://stackoverflow.com/a/31428755/) mentionne que vous devez l'envoyer en octets à la fin. C'est ce que le protocole réseau comprend. Pour la conversion de base cependant, notez qu'il existe une méthode [BitConverter.GetBytes (float)] (https://msdn.microsoft.com/en-us/library/yhwsaf3w%28v=vs.110%29.aspx? f = 255 & MSPPError = -2147217396) – Default

Répondre

1

depends, si vous pouvez joindre dire BinaryWriter au NetworkStream, alors vous pouvez faire des choses comme:

static void ServerTask(object clnObj) 
{ 
    TcpClient client = clnObj as TcpClient; 

    BinaryWriter bw = new BinaryWriter(client.GetStream()); 

    int k =99; 
    bw.Write(k); 

    client.Close(); 
} 

Mais lors de l'envoi en binaire, vous devriez faire attention à des choses comme boutisme. Aussi avec des flotteurs, important est l'encodage, il doit être identique sur recevoir et envoyer des pièces. Mais je pense BinaryReader, BinaryWriterhandle ceux-ci pour vous (par exemple, l'endianness est fixe). En fin de compte, tout est envoyé en tant que tableau d'octets. Juste BinaryWriter est une abstraction ici, et il fait le travail pour vous pour convertir l'entier en tableau d'octets.