2011-12-12 83 views
2

我一直在學習如何編程套接字,但是當我嘗試寫代碼時,我遇到了一些問題。該代碼適用於連接到同一局域網上的計算機,但當我試圖通過互聯網連接到另一個網絡上的兩臺計算機時,我無法執行此操作。套接字編程學習

這是因爲程序還是這是因爲網絡安全?

如果我想讓應用程序通過互聯網進行通信,我可以在哪裏找到關於它的更多信息。我正在考慮製作聊天程序,以便更好地理解它,但我甚至無法通過互聯網使程序通信!

編輯: 那麼我使用的端口是6892.它只是一個隨機端口。我很喜歡學習這些東西。

+4

今天水晶球朦朧。請顯示一些代碼或至少一些關於您正在使用的端口的細節,您的網絡設置等。 –

+0

您應該記住,互聯網上的大多數端口都被防火牆阻止,因此請嘗試連接兩臺主機來控制這些。 –

+0

但你如何通過防火牆?比如今天常見的聊天應用程序必須通過防火牆嗎? – mma1480

回答

3

如果你使用本地套接字,並且你在防火牆後面,這肯定會失敗。您的防火牆幾乎肯定會設置爲僅允許端口80(http)和端口443(?)(https)。

+0

那麼這是否意味着我必須在防火牆上打開一個端口或者進行某種端口轉發? – mma1480

+0

我會避免打開任何不必要的端口,特別是如果你不確定你在做什麼。這是被黑客攻擊的絕對方式。但是,是的,你可以做到這一點。標準端口列表在這裏http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers 正如下面的Clyfe評論所提到的,即使您打開了正確的端口,您甚至可能無法連接。例如,你可以考慮HTTP隧道。 – Barry

+0

您需要打開您在套接字鏈接兩端之間的任何防火牆上使用的端口。 – ChrisBD

2

在某些第3層網絡拓撲中,計算機之間的連接不是雙向的,而且必須通過聯合代理等技術來調解通信。

遠程工作站可能無法直接訪問您的計算機,他只能訪問您的網關,具體取決於設置。

0

是一個或兩個或您的計算機在本地網絡?如果他們的IP地址以192.168開頭,則它們位於本地網絡中。

您還可以使用http://whatismyipaddress.com/來檢查顯示的IP是否與您在計算機上看到的IP相同,但請記住刪除任何代理。

如果目標計算機位於本地網絡中,或者所顯示的IP與計算機上顯示的IP不同,則會出現問題。這種情況與你的程序無關,但你必須配置你的網絡。您可能必須聯繫您的網絡管理員才能解決問題。

+0

當兩臺計算機都在本地網絡中時,他們能夠進行通信。但是當它們不在同一個地方時,程序就不能通信。這就是我想要了解的:當他們不在同一個網絡上時如何讓他們溝通。 – mma1480

+0

@ mma1480這是因爲無法在網絡外看到本地網絡地址。您需要知道用於訪問本地網絡的地址(通常是上述網站中顯示的地址),您需要端口轉發。也許這可以幫助:http://en.wikipedia.org/wiki/Port_forwarding。但配置網絡轉發需要管理權限才能管理本地網絡的配置。您可能需要聯繫您的網絡管理員。 – fefe