天天看點

Java套接字Socket程式設計-----伺服器端和用戶端

用戶端和伺服器端可以互相交信,在這裡我實作了一對一的通訊,有這個基礎了,我們就可以實作一對多的通信了。

那我們就來程式設計實作之.

首先要引用網絡包

import java.io.*;

import java.net.*;

 //在這裡初始化ServerSocket

  serverSocket=new ServerSocket(8000);

  socket=serverSocket.accept();

這樣伺服器端處理監聽狀态,一直監聽用戶端的連接配接.

//在這裡初始化ServerSocket

  socket=new Socket(host,port);//host為伺服器的IP位址,port為端口号,注意port号越大越好。0~65535

這樣用戶端就可以同伺服器端互相通信了

這樣伺服器和用戶端就建立了連接配接。

下面我來建立讀寫流友善調用

//構造一個傳回值為BuffereReader讀對象流的函數

 private BufferedReader getReader(Socket socket)throws IOException{

  InputStream socektIn=socket.getInputStream();

  return new BufferedReader(new InputStreamReader(socektIn));

 }

   //構造一個傳回值為PrintWriter寫對象流的函數 

 private PrintWriter getWriter(Socket socket) throws IOException{

  OutputStream socketOut=socket.getOutputStream();

  return new PrintWriter(socketOut,true);

 }

 這樣就可以通過

   try {

    pw=getWriter(socket);

   } catch (IOException e1) {

    // 處理異常

    e1.printStackTrace();

   }

   pw.println(tt);

   }

這種方式将資訊發送出去

通過

public void run() {

  // 在這裡運作線程中的方法

  while(true){

   try {

    br=getReader(socket);

    String str;

    str=br.readLine();

    jta.append("用戶端說: "+str+"/n");

   } catch (IOException e) {

    // 處理異常

    e.printStackTrace();

   }

  }

 }

因為我們不知道什麼時候能夠讀到資訊,是以用一個線程進行捕捉

并顯示出來

當然不要在主函數中啟動主線程

Server server=new Server();

  Thread th=new Thread(server);//初始化線程.

  th.start();//啟動線程

這樣就可以實作收發資訊了。而用戶端其實和伺服器端差不多的方式收發資訊,這裡就不多說了。