package com.hsj.net.login;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;public class BSThread implements Runnable {private Socket s;public BSThread(Socket s) {this.s=s;}public void run() {try {BufferedReader in=new BufferedReader(new InputStreamReader(s.getInputStream()));PrintWriter out=new PrintWriter(s.getOutputStream(),true);String info=null;while((info=in.readLine())!=null){System.out.println(info);if(info.trim().length()<=0)break;}out.println("你好,歡迎免費使用我們的軟體");s.close();} catch ( Exception e) {e.printStackTrace();}}}
package com.hsj.net.login;import java.net.ServerSocket;import java.net.Socket;/** * 服務端:自訂 * 用戶端:瀏覽器,telent * @author heshengjun * */public class BSDemo {public static void main(String[] args) throws Exception {ServerSocket ss=new ServerSocket(10010);while(true){Socket s=ss.accept();String ip=s.getInetAddress().getHostAddress();System.out.println("ip: "+ip);new Thread(new BSThread(s)).start();}}}
這裡有一個問題需要注意,對於瀏覽器發送過來的資料,最後面使用一個空行來區分訊息頭和本文。所以我們讀取訊息頭的時候使用判斷標誌需要注意一下。不然會阻塞,程式停止運行