服务端负责接收客户端发起的请求,通过阻塞方式监听客户请求,一旦获取客户端的连接,服务端就与客户端建立了链接开启两者通讯。
Server:服务端
public class Server {
final static int PROT = 8765;
public static void main(String[] args) {
//服务端对象
ServerSocket server = null;
try {
//通过端口启动服务
server = new ServerSocket(PROT);
System.out.println(" server start .. ");
//进行阻塞,当客户端建立连接后解除阻塞行为
Socket socket = server.accept();
//新建一个线程执行客户端的任务
new Thread(new ServerHandler(socket)).start();
} catch (Exception e) {
e.printStackTrace();
} finally {
if(server != null){
try {
server.close();
} catch (IOException e) {
e.printStackTrace();
}
}
server = null;
}
}
Client:客户端
public class Client {
final static String ADDRESS = "127.0.0.1";
final static int PORT = 8765;
public static void main(String[] args) {
Socket socket = null;
BufferedReader in = null;
PrintWriter out = null;
try {
//通过ip、端口请求服务端
socket = new Socket(ADDRESS, PORT);
//读取服务端响应的数据
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//向服务端发送数据,自动冲刷数据
out = new PrintWriter(socket.getOutputStream(), true);
//向服务器端发送数据
out.println("接收到客户端的请求数据...");
out.println("接收到客户端的请求数据1111...");
String response = in.readLine();
System.out.println("Client: " + response);
} catch (Exception e) {
e.printStackTrace();
} finally {
if(in != null){
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(out != null){
try {
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if(socket != null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
socket = null;
}
}
}
ServerHandler:服务端的业务处理过程
public class ServerHandler implements Runnable{
private Socket socket ;
public ServerHandler(Socket socket){
this.socket = socket;
}
@Override
public void run() {
BufferedReader in = null;
PrintWriter out = null;
try {
//服务端获取客户端请求数据
in = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
//往客户端发送数据
out = new PrintWriter(this.socket.getOutputStream(), true);
String body = null;
while(true){
body = in.readLine();
if(body == null) break;
System.out.println("Server :" + body);
out.println("服务器端回送响的应数据.");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if(in != null){
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(out != null){
try {
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if(socket != null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
socket = null;
}
}
}