JAVA利用Socket类和ServerSocket类编写一个C/S程序,实现C/S通信。 客户端向服务器端发送请求给服务端,形式如“From 学号 姓名: what time is it ”;服务器端接受到该字符串后将服务器端当前时间返回给客户端,形式如“To 姓名: 当前时间”;客户端向服务器端发送“From 学号 姓名:Exit”命令,服务器端向客户端返回“To 姓名:Bye”后退出。
时间: 2023-06-11 16:08:07 浏览: 81
以下是一个简单的 Java Socket 编程实现,包括客户端和服务器端代码:
服务器端代码:
```java
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(8080);
} catch (IOException e) {
System.err.println("Could not listen on port: 8080.");
System.exit(1);
}
Socket clientSocket = null;
System.out.println("Waiting for connection.....");
try {
clientSocket = serverSocket.accept();
} catch (IOException e) {
System.err.println("Accept failed.");
System.exit(1);
}
System.out.println("Connection successful");
System.out.println("Waiting for input.....");
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(),
true);
BufferedReader in = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
if (inputLine.equals("Exit")) {
out.println("Bye");
break;
}
else {
String[] parts = inputLine.split(" ");
String from = parts[0] + " " + parts[1];
String name = parts[2].substring(0, parts[2].length() - 1);
String message = parts[3];
if (message.equals("what time is it")) {
out.println("To " + name + ": " + new java.util.Date().toString());
}
}
}
out.close();
in.close();
clientSocket.close();
serverSocket.close();
}
}
```
客户端代码:
```java
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) throws IOException {
Socket echoSocket = null;
PrintWriter out = null;
BufferedReader in = null;
try {
echoSocket = new Socket("localhost", 8080);
out = new PrintWriter(echoSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
echoSocket.getInputStream()));
} catch (UnknownHostException e) {
System.err.println("Don't know about host: localhost.");
System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for "
+ "the connection to: localhost.");
System.exit(1);
}
BufferedReader stdIn = new BufferedReader(
new InputStreamReader(System.in));
String userInput;
while ((userInput = stdIn.readLine()) != null) {
out.println(userInput);
if (userInput.equals("Exit")) {
System.out.println("Server says: " + in.readLine());
break;
}
else {
System.out.println("Server says: " + in.readLine());
}
}
out.close();
in.close();
stdIn.close();
echoSocket.close();
}
}
```
在命令行中分别执行以下命令:
```bash
javac Server.java
javac Client.java
java Server
```
在另一个命令行中执行以下命令:
```bash
java Client
```
然后按照题目要求输入命令即可。