//服务器
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerTest {
public static void main(String[] args) {
ServerSocket serverSocket = null;
Socket socket = null;
try {
serverSocket = new ServerSocket(9999);
while (true) {
System.out.println("等待客户端链接......");
socket = serverSocket.accept();
System.out.println("客户端-" + socket.getInetAddress() + "已连接");
//创建线程,并处理
new Thread(new ServerThread(socket)).start();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
assert serverSocket != null;
serverSocket.close();
assert socket != null;
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//客户端
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.util.Scanner;
public class ClientSocket {
public static void main(String[] args) {
Socket socket = null;//客户端Socket
BufferedReader br = null;//读服务器的消息
PrintStream ps = null;//给服务器发消息
Scanner sc = null;
try {
sc = new Scanner(System.in);
socket = new Socket("127.0.0.1", 9999);
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
ps = new PrintStream(socket.getOutputStream());
System.out.println("链接成功...");
while (true) {
System.out.print("请输入要发送的消息:");
String clientMsg = sc.next();
ps.println(clientMsg);
String serverMsg = br.readLine();
System.out.println("服务器:" + serverMsg);
}
} catch (IOException e) {
e.printStackTrace();
}
try {
sc.close();
assert socket != null;
socket.close();
assert br != null;
br.close();
assert ps != null;
ps.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//服务器线程类
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
public class ServerThread implements Runnable {
private Socket socket;
public ServerThread(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
BufferedReader br = null;
PrintStream ps = null;
try {
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
ps = new PrintStream(socket.getOutputStream());
while (true) {
String clientMsg = br.readLine();
if (clientMsg != null) {
System.out.println("客户端" + socket.getInetAddress() + ":" + clientMsg);
ps.println("已收到信息~~~");
}
}
} catch (IOException e) {
System.out.println("客户端" + socket.getInetAddress() + "已断开连接...");
} finally {
try {
assert br != null;
br.close();
assert ps != null;
ps.close();
assert socket != null;
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}