[java]網絡編程(Socket編程、套接字編程) – JAVA編程語言程序開發技術文章

Socket類—-實現客戶端套接字

                   —-套接字是兩臺機器間通信的端點,用於描述IP地址和端口,應用程序通常通過“套接字”向網絡發送請求                         或者應答網絡請求

                   —-構造方法:Socket(InetAdress address,int port)—創建一個流套接字,並將其連接到指定IP地址的端口                        號

模擬客戶端

[java]
package guo; 
 
import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.io.OutputStreamWriter; 
import java.io.PrintWriter; 
import java.net.Socket; 
 
public class Client1 { 
 
    public static void main(String[] args)  
    { 
        try 
        { 
            Socket socket = new Socket("127.0.0.1",8000); 
            BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
            PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()),true); 
            BufferedReader in1 = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
            while(true) 
            { 
                /*從鍵盤讀一行*/ 
                String str = in.readLine(); 
                if(str==null || "".equals(str))break; 
                /*寫給服務器端*/ 
                out.println(str); 
                String str1 = in1.readLine(); 
                System.out.println(str1); 
 
            } 
            socket.close(); 
        } 
        catch (Exception e) 
        { 
            e.printStackTrace(); 
        } 
    } 

模擬服務端

[java] 
package guo; 
 
import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.io.OutputStreamWriter; 
import java.io.PrintWriter; 
import java.net.ServerSocket; 
import java.net.Socket; 
 
public class Service1 { 
 
    public static void main(String[] args)  
    { 
        try 
        { 
            /*開辟一個端口就是開啟一個服務瞭—端口的分配必須是唯一的,因為端口是為瞭唯一標識每臺計算機唯一服務的
             * 端口號是從0~65535之間的,前1024個端口已被Tcp/Ip作為保留端口,因此自己分配的端口隻能是1024以後的*/ 
            ServerSocket s = new ServerSocket(8000); 
            System.out.println("服務已經開啟,等待客戶來訪問!"); 
            /*等待客戶來訪問,如果沒有客戶就阻塞,一直等待*/ 
            Socket socket = s.accept(); 
            System.out.println("接受到客戶的訪問!"); 
            /*服務器從Socket的輸入流中讀取數據*/ 
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
            BufferedReader in1 = new BufferedReader(new InputStreamReader(System.in)); 
            PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()),true); 
            while(true) 
            { 
                //從socket的輸入流中進行讀操作 
                String str = in.readLine(); 
                if("exit".equals(str))break; 
                /*打印到控制臺*/ 
                System.out.println(str); 
                /*服務器端鍵盤*/ 
                String str1 = in1.readLine(); 
                out.println(str1); 
            } 
            socket.close(); 
            s.close(); 
 
        } 
        catch (Exception e) 
        { 
            e.printStackTrace(); 
        } 
    } 

發佈留言

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