2016-10-03 221 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