Java的网络通信是Socket实现的,Socket分为ServerSocket和Socket两大类。 ServerSocket用于服务端,可以通过accept方法监听请求,监听到请求后返回Socket,Socket用于具体完成数据传输,客户端直接使用Socket发起请求并传输数据。
ServerSocket 的使用可以分为三步:
1、 创建ServerSocket。 ServerSocket的构造方法一共有5个,用起来最方便的是ServerSocket(int port),只需要一个端口号
2、调用创建出来的ServerSocket的accept方法进行监听。
3、使用accept方法返回的socket与客户端进行通信
服务端:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerSocketDemo {
public static void main(String args[]){
try {
//创建一个ServerSocket 监听8080端口
ServerSocket server = new ServerSocket(8080);
//等待请求
Socket socket = server.accept();
//读取数据
BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line = is.readLine();
System.out.println("客户端数据:"+line);
//创建PrintWriter,用于发送数据
PrintWriter pw = new PrintWriter(socket.getOutputStream());
pw.println("服务端返回数据:"+line);
pw.flush();
//关闭资源
pw.close();
is.close();
socket.close();
server.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
客户端:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class ClientSocketDemo {
public static void main(String args[]){
String msg = "Hello World";
try {
Socket socket = new Socket("127.0.0.1",8080);
//读写操作
PrintWriter pw = new PrintWriter(socket.getOutputStream());
BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//发送数据
pw.println(msg);
pw.flush();
//接受数据
String line = is.readLine();
System.out.println("服务器返回数据:"+line);
//关闭资源
is.close();
pw.close();
socket.close();
} catch (Exception e) {
}
}
}
注:参考书籍《看透Spring MVC 源码分析与实践》 韩璐彪 著