简易socket客户端和多线程服务器实现 下午时间匆忙写的,尽量简化实现。 客户端: package com.XiongYi.client;import java.io.*;import java.net.*;public class Client ...{ public static void main(String[] args)throws IOException ...{ final String Server_IP = "localhost"; final int Server_Port = 1986; Socket socket=new Socket(Server_IP,Server_Port); try ...{ System.out.println("Client Start..."); System.out.println("socket="+socket); socket.setKeepAlive(true); PrintWriter out = new PrintWriter( new BufferedWriter (new OutputStreamWriter (socket.getOutputStream())),true); InputStream netIn = socket.getInputStream(); BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(System.in)); System.out.print("请输入请求:"); String httpString = bufferedReader.readLine(); System.out.println(httpString); int stick = httpString.indexOf("//"); //找到“HTTP://localhost:80/Tomcat/test.html”中“//”的位置 if(stick!=-1) httpString = httpString.substring(stick+2); stick = httpString.indexOf("/"); httpString = httpString.substring(stick); System.out.println(httpString); out.println("GET " + httpString + " HTTP/1.1"); out.println("Accept: */*"); out.println("Accept-Language: zh-cn"); out.println("UA-CPU: x86"); out.println("Accept-Encoding: gzip, deflate"); out.println("User-Agent: R.C."); out.println("Host: localhost:"+Server_Port); out.println("Connection: Keep-Alive"); out.flush(); //这里不能用out.close,否则socket也会被关闭! System.out.println("Reading the page... "); byte buf[] = new byte[1024]; int num = 0; while( (num=netIn.read(buf,0,buf.length))!=-1 )...{ System.out.print(new String(buf,0,num,"GBK")); } bufferedReader.close(); netIn.close(); out.close(); } finally ...{ System.out.println("closing.."); socket.close(); } }} 多线程服务端: package com.XiongYi.server;import java.io.*;import java.net.*;public class Server extends Thread ...{ int server_Port; public Server(int sp) ...{ server_Port = sp; } public void run() ...{ System.out.println("A server thread is running..."); try ...{ ServerSocket serverSocket = new ServerSocket(server_Port); System.out.println("ServerSocket = " + serverSocket); Socket socket = serverSocket.accept(); System.out.println("Server start..."); System.out.println("Connection accepted, the socket is " + socket); BufferedReader in = new BufferedReader(new InputStreamReader(socket .getInputStream())); PrintWriter out = new PrintWriter(new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())), true); out.println("Hi, I'm a server..."); System.out.println("Reading the request..."); String outS = "The http request:"; while (outS != null) ...{ System.out.println(outS = in.readLine()); } out.close(); in.close(); socket.close(); serverSocket.close(); System.out.println("closing..."); } catch (IOException e) ...{ e.printStackTrace(); } } public static void main(String[] args)...{ int i = 0; while(i<10)...{ //最多启用10线程 new Server(1986+i).run(); } }}