溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java SocketAPI關鍵代碼怎么寫以及使用介紹

發布時間:2021-10-23 17:54:01 來源:億速云 閱讀:265 作者:柒染 欄目:編程語言

Java SocketAPI關鍵代碼怎么寫以及使用介紹,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

Java SocketAPI如何才能夠正常的使用呢?這個問題就需要我們掌握相關的代碼。所謂socket通常也稱作"套接字",用于描述IP地址和端口,是一個通信鏈的句柄。應用程序通常通過"套接字"向網絡發出請求或者應答網絡請求。

以J2SDK-1.3為例,Java SocketAPI和ServerSocket類庫位于java.net包中。ServerSocket用于服務器端, Socket是建立網絡連接時使用的。在連接成功時,應用程序兩端都會產生一個Socket實例,操作這個實例,完成所需的會話。對于一個網絡連接來說, 套接字是平等的,并沒有差別,不因為在服務器端或在客戶端而產生不同級別。不管是Socket還是ServerSocket它們的工作都是通過 SocketImpl類及其子類完成的。

重要的Java SocketAPI:

java.net.Socket繼承于java.lang.Object,有八個構造器,其方法并不多,下面介紹使用最頻繁的三個方法,其它方法大家可以見JDK-1.3文檔。

Accept方法用于產生"阻塞",直到接受到一個連接,并且返回一個客戶端的Socket對象實例。"阻塞"是一個術語,它使程序運行暫時"停留"在這個地方,直到一個會話產生,然后程序繼續;通常"阻塞"是由循環產生的。

getInputStream方法獲得網絡連接輸入,同時返回一個IutputStream對象實例,。

getOutputStream方法連接的另一端將得到輸入,同時返回一個OutputStream對象實例。

注意:其中getInputStream和getOutputStream方法均會產生一個IOException,它必須被捕獲,因為它們返回的流對象,通常都會被另一個流對象使用。

如何開發一個Server-Client模型的程序

開發原理:

服務器,使用ServerSocket監聽指定的端口,端口可以隨意指定(由于1024以下的端口通常屬于保留端口,在一些操作系統中不可以隨意使用,所以建議使用大于1024的端口),等待客戶連接請求,客戶連接后,會話產生;在完成會話后,關閉連接。

客戶端,使用Socket對網絡上某一個服務器的某一個端口發出連接請求,一旦連接成功,打開會話;會話完成后,關閉Socket??蛻舳瞬恍枰付ù蜷_的端口,通常臨時的、動態的分配一個1024以上的端口。

{建立服務器}

  1. import java.net.*;  

  2. import java.io.*;  

  3. public class Server  

  4. {  

  5. private ServerSocket ss;  

  6. private Socket socket;  

  7. private BufferedReader in;  

  8. private PrintWriter out;  

  9. public Server()  

  10. {  

  11. try  

  12. {  

  13. ss = new ServerSocket(10000);  

  14.  

  15. while (true)  

  16. {  

  17. socket = ss.accept();  

  18. in = new BufferedReader(new InputStreamReader
    (socket.getInputStream()));  

  19. out = new PrintWriter(socket.getOutputStream(),true);  

  20. String line = in.readLine();  

  21. out.println("you input is :" + line);  

  22. out.close();  

  23. in.close();  

  24. socket.close();  

  25. }  

  26. ss.close();  

  27. }  

  28. catch (IOException e)  

  29. {}  

  30. }  

  31. public static void main(String[] args)  

  32. {  

  33. new Server();  

  34. }  

  35. }  

這個程序建立了一個服務器,它一直監聽10000端口,等待用戶連接。在建立連接后給客戶端返回一段信息,然后結束會話。這個程序一次只能接受一個客戶連接。

{建立客戶端}

  1. import java.io.*;  

  2. import java.net.*;  

  3. public class Client  

  4. {  

  5. Socket socket;  

  6. BufferedReader in;  

  7. PrintWriter out;  

  8. public Client()  

  9. {  

  10. try  

  11. {  

  12. socket = new Socket("xxx.xxx.xxx.xxx", 10000);  

  13. in = new BufferedReader(new InputStreamReader
    (socket.getInputStream()));  

  14. out = new PrintWriter(socket.getOutputStream(),true);  

  15. BufferedReader line = new BufferedReader(new 
    InputStreamReader(System.in));  

  16. out.println(line.readLine());  

  17. line.close();  

  18. out.close();  

  19. in.close();  

  20. socket.close();  

  21. }  

  22. catch (IOException e)  

  23. {}  

  24. }  

  25. public static void main(String[] args)  

  26. {  

  27. new Client();  

  28. }  

  29. }  

這個客戶端連接到地址為xxx.xxx.xxx.xxx的服務器,端口為10000,并從鍵盤輸入一行信息,發送到服務器,然后接受服務器的返回信息,結束會話。

關于Java SocketAPI關鍵代碼怎么寫以及使用介紹問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女