我開始在java網絡和hava一些questions.Can任何人都清楚這些給我? 套接字和服務器套接字有什麼區別? ServerSocket是否與服務器有關?關於ServerSockets和套接字
回答
是的,我可以向您解釋:A ServerSocket
是服務器端套接字。它需要您的防火牆中有一個開放的端口,並且需要LISTEN才能連接到您的計算機。 '正常'Socket
只是詢問連接的服務器。這不需要防火牆中的開放端口。你在互聯網上做的一切都需要你的電腦在互聯網上詢問一個連接的服務器。但服務器必須偵聽連接。因此,與ServerSocket
,你能接受這些要求,並創建一個連接:
ServerSocket server = new ServerSocket(<port>);
Socket client = server.accept();
這是服務器端的代碼,它創建了一個ServerSocket來監聽連接請求並創建一個普通的Socket使用此連接。客戶端應用程序將連接這樣的:
Socket skt = new Socket(<ip>, <port>);
這也將創造一個socket
,可以使用該連接。但它需要一個serverSocket
,它接受連接請求。
希望,幫你
Cydhra
P.S英語不是我的母語,所以我的失誤遺憾。
編輯:
u能請解釋一下我這是什麼server.accept()做
此方法將等待客戶端請求的連接。因此,如果您的應用程序在等待連接時應該做些什麼,您應該使用一個線程,因爲您的程序將停止,直到server.accept()獲取請求。
server.accept()等待客戶端請求與指定端口上的此服務器建立連接。當客戶端請求這樣的連接時,accept() - Method將返回一個代表客戶端的Socket實例。它包含輸入和輸出流,可用於發送和接收來自客戶端的數據。
Socket skt = new Socket(<port>, <ip>);
這是客戶端的代碼,正如我在上面發佈的。它還包含輸入和輸出流。你在一個Socket的OutputStream中寫入的所有內容都將由另一個Socket的InputStream接收。套接字就像文件一樣,有兩個端點:一端寫入,另一端寫入。
非常感謝,它確實幫助了我。你可以解釋一下server.accept()做什麼。客戶端請求時是否在服務器和客戶端之間創建套接字? –
- 1. 關於boost :: asio套接字和阻塞
- 2. 多個ServerSockets,多個設備併發送到多個套接字
- 3. 關於Android的套接字
- 4. 關於網絡套接字
- 5. 關閉套接字和Windows
- 6. java套接字SocketException套接字關閉
- 7. 關於在actionscript3中的套接字
- 8. 關於python的套接字備份
- 9. 關於Java中的套接字類
- 10. 關於Google App Engine套接字API
- 11. 關閉套接字
- 12. 關閉套接字?
- 13. 關閉套接字連接
- 14. 關於Java套接字和打印流的好奇心
- 15. 關於C++中的套接字recv和char []
- 16. 關於套接字編程和REST設計
- 17. 關於從輸入流(套接字)讀取和寫入困惑
- 18. 關於127.0.0.1和使用套接字的IPC
- 19. SO_LINGER和關閉套接字(WINSOCK)
- 20. AsyncTask和套接字不會關閉
- 21. 套接字和TCP套接字
- 22. Chrome - 禁用Web套接字或關閉Web套接字連接?
- 23. 關閉套接字後,套接字連接保持ESTABLISHED
- 24. Apache套接字不關閉?
- 25. Codenameone關閉套接字
- 26. java.net.SocketException套接字已關閉
- 27. 套接字關閉異常
- 28. 套接字關閉時間
- 29. JMeter java.net.SocketException:套接字關閉
- 30. android SocketException:套接字關閉
我們能否知道這些類的文檔的哪個部分及其構造函數對您而言不清楚? – Pshemo
無論如何試着想一下這種情況:套接字用於與另一個套接字進行通信。問題是他們指定了另一個套接字的地址和端口號。你會如何解決「第一個插座」的問題?是否所有套接字都指定要連接哪個套接字,或者是否應該有另一種套接字不指定此套接字,並且將接受來自所有其他套接字的連接。還應該在哪裏使用這種套接字(哪些應該用於客戶端代碼,哪些用在服務器代碼上)? – Pshemo