2015-04-24 31 views
0

我試圖通過無線連接發送和接收來自iPad的TCP流,以便連接到筆記本電腦。我使用boost :: asio創建套接字。這個項目是一個數據流庫的端口,我維護它在Windows,OSX和Linux上運行得非常好。iOS上的TCP流不會顯示在無線網絡上

當我在模擬器上運行它時,我可以使應用程序在有線局域網上向/從其他計算機發送和接收數據流。但是,當我瞄準設備本身時,我看不到任何流。

正如我所說,我通過iPad和筆記本電腦之間的無線通信。我在筆記本電腦上創建一個無線網絡,然後給iPad一個靜態IP。連接似乎沒有問題,因爲我可以在不丟包的情況下ping iPad。我也嘗試將它們放在同一個無線局域網上(儘管我不應該在工作中使用無線路由器)來連接這些設備,但這也不起作用。

根據蘋果公司的說法,用NSStream設置這樣的數據流只會起作用。也許有一些權限魔術發生在引擎蓋下,我沒有用boost :: asio函數調用。無論如何,我看不到流。

+0

iOS方面不需要魔法。你確定筆記本電腦上的防火牆有沒有阻止你的連接?當您嘗試打開流時會得到什麼結果?時間到?可以運行你在筆記本電腦上運行Wireshark來查看連接是否被嘗試? – Paulw11

+0

謝謝。當然沒有防火牆。當我在iPad上打開一個lsl(lsl是我的庫的名稱)流時,我無法在筆記本電腦可用的lsl流的列表中看到它。當我打開或關閉流時,網絡上有一些小動作(根據wireshark),但流在運行時沒有任何動作。 – dmedine

+0

如果您在建立連接時沒有發生超時或其他錯誤,並且Wire Shark顯示SYN-SYNACK-ACK數據包,那麼我建議您實際上沒有發送任何數據 – Paulw11

回答

0

其實,事實證明這是錯的唯一的事情是,我需要設置我的路由表,以便它指向的多播到無線網卡:

> sudo route -nv add -net 224.0.0.183 -interface en1

我從檢查得到了IP wireshark中的數據包 - 這是我的設備在我的筆記本電腦中進行組播的地址。發送作品(從設備到筆記本電腦),接收仍然保持沉默。這可能是需要在路由表中設置的其他東西(我真的不太瞭解多播),否則我可以用我的庫來調整一些配置設置。

+0

我應該提到,圖書館會根據什麼是合適的自動選擇TCP或UDP。 – dmedine