服務器端與客戶端TCP連接入門(一)


Java中使用Socket(即套接字)完成TCP程序的開發

服務器端使用ServerSocket接收客戶端的連接請求,每一個客戶端都使用一個Socket對象表示

  在服務器端每次運行時都要使用accept()方法等待客戶端連接,此方法執行后,服務端將進入阻塞狀態,直到客戶端連接之后,程序才可以向下繼續執行。每一個Socket都表示一個客戶端對象

  在客戶端,程序可以通過Socket類的getInputStream()方法取得服務器的輸出信息,在服務器端可以通過getOutputStream()方法取得客戶端的輸出信息

  在網絡程序中,要使用輸入及輸出流的形式完成信息的傳遞。

 

實例:

1、服務器的程序,向客戶端輸出“Hello World”

package Socket;

import java.io.IOException;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;

public class HelloServer {
    public static void main(String[] args) throws Exception {
        ServerSocket server =null;
        Socket client=null;//一個socket對象表示一個客戶端
        PrintStream out=null;//聲明打印流對象,以向客戶端輸出
        server=new ServerSocket(8888);//此時服務器在8888端口等待客戶端的訪問
        
        System.out.println("服務器運行,等待客戶端連接");
        client=server.accept();//程序阻塞,等待客戶端連接才能繼續往下走
        String str="Hello World";
        out=new PrintStream(client.getOutputStream());//實例化打印流對象,輸出信息
        out.println(str);
        out.close();
        client.close();
        server.close();        
    }    
}

 

2、客戶端的程序,接受服務器輸出的內容

package Socket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;

public class HelloClient {
    public static void main(String[] args) throws Exception {
        Socket client=null;//聲明Socket對象
        client=new Socket("localhost",8888);//指定連接的主機和端口
        BufferedReader buf=null;
        buf=new BufferedReader(new InputStreamReader(client.getInputStream()));//取得客戶端的輸入流
        
        String str=buf.readLine();
        System.out.println("服務器端輸出內容:"+str);
        client.close();
        buf.close();
    }
}

 服務端只有一個accept(),接收一次連接請求之后,就會關閉,實際應用中當然是循環接收請求


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM