本文介紹了客戶端和服務器是否需要使用同一端口進行連接?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我有一個使用Java的服務器-客戶端程序,我試圖用一個端口創建一個ServerSocket
,而用不同的端口創建一個客戶端Socket
,但它們無法相互連接。客戶端引發ConnectException
。當我將客戶端上的套接字更改為與我用于ServerSocket的套接字相同時,它們可以正常工作。
我從此線程Java Networking: Explain InputStream and OutputStream in Socket的asser了解到,如果計算機使用端口創建套接字,則該套接字將綁定到該計算機,那么為什么客戶端和服務器需要使用相同的端口來相互連接?
另外,兩個應用程序不能使用一臺計算機上的同一端口,所以當兩個具有相同端口的不同服務器和一臺計算機需要通過兩個不同的應用程序連接到這兩個服務器時,會發生什么情況?
tcp
您需要對推薦答案通信有一些基本的了解。只需谷歌TCP教程。
簡而言之,服務器將偵聽特定端口。當服務器偵聽某個端口時,它將綁定到該端口。一臺計算機上只能有一個服務器(或進程)在偵聽某個端口。
客戶端將連接到計算機并指定要在其上通信的端口。如果服務器正在監聽客戶端請求的端口,則會發生通信。否則連接無法繼續。
因此服務器綁定(或偵聽)的端口必須與客戶端指定的端口相同。
這篇關于客戶端和服務器是否需要使用同一端口進行連接?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,