java socket編程實例代碼講解

一、所謂socket一般也稱做"套接字",用於描述IP地址和端口,是一個通訊鏈的句柄。應用程序一般經過"套接字"向網絡發出請求或者應答網絡請求。 java

操做java socket時用到的最多的三個方法爲: 服務器

accept():主要用於服務器端產生「阻塞」,等待客戶端的連接請求,而且返回一個客戶端的Socket實例; 網絡

getInputStream():方法主要用來得到網絡鏈接輸入,同時返回一個InputStream對象實例; socket

getOutputStream():方法和上面的getInputStream相反。 .net

二、通常要創建Java的Socket鏈接,應首先明確服務器端和客戶端,服務器端使用ServerSocket監聽指定的端口,使用accept 等待客戶端請求,連接連接,開始會話、完成會話後,關閉連接。(注意,通常socket的關閉都應該是服務器端來進行的,後面說);客戶端使用 Socket對網絡中的某個服務器的某個端口發出連接請求,鏈接成功,開始會話,會話完成,Socket關閉。 code

二、示例代碼: server

服務器端:
  對象

package com.icer.server;  
 import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket; 
 /**
 * Server
 * 
 * @author Icer
 * 
 */
public class Server { 
     private ServerSocket ss;
    private Socket s;
    private BufferedReader br;
    private PrintWriter pw; 
     public Server() {
        try {
                ss = new ServerSocket(10000);
                System.out.println("Server is starting...");
                s = ss.accept();
                br = new BufferedReader(new InputStreamReader(s.getInputStream()));
                pw = new PrintWriter(s.getOutputStream(),true);
                String line = br.readLine();
                System.out.println(line);
                pw.println("your word is:" + line);
                //pw.println("helloworld");
                br.close();
                pw.close(); 
         } catch (IOException ie) {
            ie.printStackTrace();
        } 
     } 
     public static void main(String[] args) throws Exception {
        new Server();
    }
}

客戶端: get

package com.icer.client;  
 import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket; 
 /**
 * Client
 * @author Icer
 *
 */
public class Client {

    private Socket s;
    private BufferedReader br;
    //private BufferedReader line;
    private PrintWriter pw;
    private String line = "";
    public Client() {
        try{
            s = new Socket("127.0.0.1",10000);
            pw = new PrintWriter(s.getOutputStream(),true);
            br = new BufferedReader(new InputStreamReader(s.getInputStream()));
            pw.println("hello");
            line = br.readLine();
            System.out.println(line);

            br.close();
            pw.close();
        }catch(IOException ie){
            ie.printStackTrace();
        }
    }
    public static void main(String[] args) throws Exception {
        new Client();
    }
}
相關文章
相關標籤/搜索