2025-05-17

 

1 什麼是socket?

-套接字(IP地址+端口)

-java.net包

-對於一個網絡連接來說,套接字是平等的,並沒有差別,不因為在s或c端而產生不同級別。

-不管是Socket還是ServerSocket他們的工作都是通過SocketImpl類及其子類完成的。

-重要的Socket API。

2 Simple Sample: Server-Client

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

Client:客戶端,使用Socket對網絡上某一個服務器的某一個端口發出連接請求,一旦連接成功,打開會話;會話完成後,關閉Socket。客戶端不需要指定打開的端口,通常臨時的、動態的分配一個1024以上的端口。

3

/**

 * 服務器,使用ServerSocket監聽指定的端口,

 * 端口可以隨意指定(由於1024以下的端口通常屬於保留端口,在一些操作系統中不可以隨意使用,

 * 所以建議使用大於1024的端口),等待客戶連接請求,客戶連接後,會話產生;

 * 在完成會話後,關閉連接。

 */

package socket.entry;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.ServerSocket;

import java.net.Socket;

public class Server {

 private Socket socket;

 private ServerSocket ss;

 public Server() throws IOException {

  ss = new ServerSocket(8000);

  while (true) {

   socket = ss.accept();

   BufferedReader br = new BufferedReader(new InputStreamReader(socket

     .getInputStream()));

   System.out.println("you input is : " + br.readLine());

  }

 }

 public static void main(String[] args) {

  try {

   new Server();

  } catch (IOException e) {

   e.printStackTrace();

  }

 }

}

/**

 * 客戶端,使用Socket對網絡上某一個服務器的某一個端口發出連接請求,一旦連接成功,打開會話;

 * 會話完成後,關閉Socket。

 *

 * 客戶端不需要指定打開的端口,通常臨時的、動態的分配一個1024以上的端口。

 */

package socket.entry;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.Socket;

import java.net.UnknownHostException;

 

public class Client { 

    Socket client; 

    PrintWriter pw; 

    public Client() throws UnknownHostException, IOException { 

        client=new Socket("127.0.0.1",8000); 

        pw=new PrintWriter(client.getOutputStream()); 

        BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 

        pw.write(br.readLine()); 

        pw.close(); 

        br.close(); 

    } 

    public static void main(String[] args) { 

        try { 

            new Client(); 

        } catch (UnknownHostException e) { 

            e.printStackTrace(); 

        } catch (IOException e) { 

            e.printStackTrace(); 

        } 

    } 

 

本文出自 “超子” 博客

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *