1、代码
1.1、服务端(SocketServer.java)
package com.demo.socket.no1;
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 SocketServer {
// 服务器套接字
private ServerSocket serverSocket;
// 客户端套接字
private Socket socket;
private BufferedReader reader ;
private PrintWriter writer;
public SocketServer (){
BufferedReader response = null;
try {
// 创建绑定8000端口的服务器套接字
serverSocket = new ServerSocket(8000);
System.out.println("服务器正在监听中。。。");
while(true){
// 监听连接
socket = serverSocket.accept();
// 获取客户端请求信息
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String requestMsg = reader.readLine();
if("quit".equalsIgnoreCase(requestMsg) || "exit".equalsIgnoreCase(requestMsg)){
if(socket!=null){
socket.close();
}
continue;
}
System.err.println(requestMsg);
// 服务器向客户端返回信息
writer = new PrintWriter(socket.getOutputStream(), true);
response = new BufferedReader(new InputStreamReader(System.in));
String responseMsg = response.readLine();
writer.println(responseMsg);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(response!=null){
response.close();
}
if(writer!=null){
writer.close();
}
if(reader!=null){
reader.close();
}
if(socket!=null){
socket.close();
}
if(serverSocket!=null){
serverSocket.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
public static void main(String[] args) {
new SocketServer();
}
}
1.2、客户端(SocketClient.java)
package com.demo.socket.no1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class SocketClient {
// 客户端套接字
private Socket socket ;
BufferedReader reader;
PrintWriter writer;
public SocketClient () {
BufferedReader line = null;
try {
while(true){
// 客户端建立与服务器的链接
socket = new Socket("127.0.0.1", 8000);
line = new BufferedReader(new InputStreamReader(System.in));
String request = line.readLine();
// 向服务器发送消息
writer = new PrintWriter(socket.getOutputStream(), true);
writer.println(request);
// 输入quit或exit则客户端断开与服务器的链接
if("quit".equalsIgnoreCase(request) || "exit".equalsIgnoreCase(request)){
if(socket!=null){
socket.close();
}
break;
}
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String response = reader.readLine();
System.err.println(response);
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(line!=null){
line.close();
}
if(writer!=null){
writer.close();
}
if(reader!=null){
reader.close();
}
if(socket!=null){
socket.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
public static void main(String[] args) {
new SocketClient();
}
}
2、执行结果
2.1、客户端
Hi, Server
Hi, Client
What are you doing?
Nothing.
exit
2.2、服务器端
服务器正在监听中。。。
Hi, Server
Hi, Client
What are you doing?
Nothing.