//Client端
public class S_Client {
public static final int TIMEOUT = 5000;
public static final int PORT = 10086;
public static void main(String[] args) {
try {
connect();
} catch (IOException e) {
e.printStackTrace();
print(e.getMessage());
}
}
public static void connect() throws IOException {
// 定义client端的套接字并且发起请求,第一个参数为ip地址,第二个参数为端口号,端口号必须在1024-65535之间
Socket socketClient = new Socket("127.0.0.1", PORT);
// 输出流,用于向socket输入信息,只能用PrintWriter
PrintWriter writer = new PrintWriter(socketClient.getOutputStream());
// 输入流,用于从socket读出信息
BufferedReader reader = new BufferedReader(new InputStreamReader(socketClient.getInputStream()));
// 输入流,用于读取从键盘输入的信息
Scanner scanner = new Scanner(System.in);
print("connect...");
String sendMessage = scanner.nextLine();
// 只要不输入"bye"就一直保持连接
while (!sendMessage.equals("bye")) {
// 将从键盘读取的信息写入socket
writer.println(sendMessage);
writer.flush();
// 打印
print("client:" + sendMessage);
print("server:" + reader.readLine());
// 循环从键盘输入信息
sendMessage = scanner.nextLine();
}
scanner.close();
writer.close();
reader.close();
socketClient.close();
}
public static void print(String message) {
System.out.println(message);
}
}
//Server端
public class S_Server {
public static void main(String[] args) {
try {
connect();
} catch (IOException e) {
e.printStackTrace();
print(e.getMessage());
}
}
public static void connect() throws IOException {
// 创建ServerSocket并监听特定端口
ServerSocket serverSocket = new ServerSocket(S_Client.PORT);
// 阻塞式等待client连接
Socket clientSocekt = serverSocket.accept();
PrintWriter writer = new PrintWriter(clientSocekt.getOutputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocekt.getInputStream()));
Scanner scanner = new Scanner(System.in);
print("connect...");
// String sendMessage = scanner.nextLine();
String receiveMessage = "";
// 只要收到的消息不为"bye"就循环发送消息
while (!receiveMessage.equals("bye")) {
writer.println("Server response:I am busy!");
writer.flush();
receiveMessage = reader.readLine();
// print("client:" + reader.readLine());
// print("server:" + sendMessage);
// sendMessage = scanner.nextLine();
}
scanner.close();
reader.close();
writer.close();
clientSocekt.close();
serverSocket.close();
}
public static void print(String message) {
System.out.println(message);
}
}