2016-10-03 234 views
1

接收确认我发送一些命令给LG IPTV。一些命令,如:从TCP套接字

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. 

我创建一个TCP套接字与这行代码:

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

和我连接并发送一些命令。 他们的工作很好,但我不能用几行代码得到确认:

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); 

我用MSDN的这个例子中,再次没有收到。 https://msdn.microsoft.com/en-us/library/bew39x2a(v=vs.110).aspx

有没有什么办法来收到ACK? 我只能写在客户端和服务器端是在那个电视。

回答

0

这是不可能收到ACK。 ,因为它没有暴露给应用程序级别。 TCP协议将继续重新发送数据包,直到它收到一个成功的ACK。

+0

所以我能为它做什么?我需要接受这个例子,看看例如温度。 当它收到一个成功的ACK,它对这个ack有什么作用? @CodeJoy – Farshad

+0

ACK只是为了确保软件包正确传输。如果你没有收到任何东西。它可能是由你的防火墙引起的或者你的代码 –

+0

中的东西不对,你的意思是没有办法? 我在一家公司工作。他们已经用VB了。 我能做什么在这种情况下,接收临时@CodeJoy – Farshad