应用场景
预存2个HTML网页在代码内。可以用任何浏览器访问该HTTP server,根据访问时地址栏输入的URL给出响应的HTML网页。
服务器代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class SocketServer {
ServerSocket serverSocket = null;
Socket socket = null;
public void sockets() {
try {
serverSocket = new ServerSocket(8898);
System.out.println("服务器开启。。。");
int i = 0;
// 实现多个客户端连接
while (true) {
socket = serverSocket.accept();
System.out.println("客户端" + i + "连接成功。。。");
if(socket!=null){
Thread thread = new Thread(new LogicThread(socket));
thread.setDaemon(true);
thread.start();
i++;
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private class LogicThread implements Runnable {
Socket socket = null;
InputStream in = null;
public LogicThread(Socket socket) {
this.socket = socket;
}
public void run() {
// TODO Auto-generated method stub
System.out.println(socket.getInetAddress());
try {
BufferedReader in =new BufferedReader(new InputStreamReader( socket.getInputStream()));
PrintStream out=new PrintStream(socket.getOutputStream());
while (true) {
new Thread() {
public void run() {
while (true) {
try { String info;
info = in.readLine();
System.out.println(info);
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
}.start();
// 发送数据
Scanner sc=new Scanner(System.in);
String info1=sc.next();
out.println(info1);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
new SocketServer().sockets();
}
}
客户端代码
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class SocketClient {
Socket socket=null;
InputStreamReader input = null;
InputStream in = null;
OutputStream out = null;
byte[] b = new byte[1024];
public void socketStart(){
try {
socket = new Socket("localhost",8898);
BufferedReader in =new BufferedReader(new InputStreamReader( socket.getInputStream()));
PrintStream out=new PrintStream(socket.getOutputStream());
while(true){
Scanner sc=new Scanner(System.in);
String info1=sc.next();
out.println(info1);
new Thread(){
public void run(){
while(true){
try {
String info;
info = in.readLine();
System.out.println(info);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}.start();
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new SocketClient().socketStart();
}
}