2016-10-03 8 views
1

J'envoie une commande à lg iptv. une certaine commande comme:Recevoir un accusé de réception de TCP Socket

Current temperature (Command: d n) 
Checks the inside temperature. 
Transmission 
[d][n][ ][Set ID][ ][Data][Cr] 
Data FF: Check the status 
Acknowledgement 
[n][ ][Set ID][ ][OK/NG][Data][x] 
* Temperature is displayed as a hexadecimal value. 

Je crée un socket TCP avec cette ligne de code:

Socket client = new Socket(AddressFamily.InterNetwork, 
        SocketType.Stream, ProtocolType.Tcp); 

et i connecter et envoyer des commandes. ils fonctionnent très bien, mais je ne peux pas recevoir Ack avec ces lignes de code:

data = data + "\r"; 
byte[] bytes = new byte[1024]; 
byte[] msg = Encoding.ASCII.GetBytes(data); 
int bytesSent = user.Send(msg); 
user.ReceiveTimeout = 2000; 
int bytesReceived = user.Receive(bytes); 
data = Encoding.ASCII.GetString(msg, 0, bytesReceived); 

i utilisé cet exemple de msdn et encore rien reçu. https://msdn.microsoft.com/en-us/library/bew39x2a(v=vs.110).aspx

Y at-il un moyen de recevoir cette ack? je peux juste écrire côté client et côté serveur est dans ce téléviseur.

Répondre

0

Il n'est pas possible de recevoir des accusés de réception. car il n'est pas exposé au niveau de l'application. Le protocole TCP continuera à renvoyer le paquet jusqu'à ce qu'il reçoive un ACK réussi.

+0

alors que puis-je faire pour cela? J'ai besoin de recevoir cette ack pour voir par exemple tempreture. quand il reçoit un ACK réussi, que fait-il avec cette ack? @CodeJoy – Farshad

+0

L'accusé de réception est juste pour s'assurer que le paquet est transféré correctement. Si vous ne recevez rien. Il peut être causé par votre pare-feu ou quelque chose ne va pas dans votre code –

+0

vous voulez dire qu'il n'y a aucun moyen? Je travaille dans une entreprise. Ils avaient eu cette chance avec VB. Que puis-je faire dans cette situation, pour recevoir temp @CodeJoy – Farshad