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
1
A
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
, BinaryWriter
handle 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.
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
Les exemples vous ont également montré comment envoyer des octets. Sinon, comment le résultat de GetBytes aurait-il pu être envoyé? – usr
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