客户端使用浏览器发起请求(不需要开发客户端)
服务端必须按照浏览器的协议规则相应数据
浏览器使用说明协议规则呢?
HTTP
用线程做package BS;
import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
public class ServerReaderThread extends Thread{
private Socket socket;
public ServerReaderThread(Socket socket) {
this.socket=socket;
}
@Override
public void run() {
try {
PrintStream ps=new PrintStream(socket.getOutputStream());
ps.println("HTTP/1.1 200 OK");
ps.println("Content-Type:text/html;charset=UTF-8");
ps.println();
ps.println("牛马");
ps.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
主函数
package BS;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class BsServer {
public static void main(String[] args) {
try {
ServerSocket sst=new ServerSocket(8080);
while(true) {
Socket socket=sst.accept();
//交给一个独立的线程处理
new ServerReaderThread(socket).start();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
用线程池做
import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
public class Target implements Runnable{
private Socket socket;
public Target(Socket socket) {
this.socket=socket;
}
@Override
public void run() {
try {
PrintStream ps=new PrintStream(socket.getOutputStream());
ps.println("HTTP/1.1 200 OK");
ps.println("Content-Type:text/html;charset=UTF-8");
ps.println();
ps.println("1111牛马");
ps.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
主函数
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class BSTest {
private static ExecutorService pool=new ThreadPoolExecutor(3,5,3000,TimeUnit.MINUTES,new ArrayBlockingQueue(2),Executors.defaultThreadFactory(),new ThreadPoolExecutor.AbortPolicy());
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
ServerSocket sst=new ServerSocket(8080);
while (true) {
Socket sk = sst.accept();
pool.execute(new Target(sk));
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}



