Java应用TCP或UDP实现点对点文本通信代码
时间: 2023-10-24 18:05:42 浏览: 60
好的,我可以给你提供一份基于 Java TCP 协议实现点对点文本通信的示例代码。你可以根据这份代码进行学习和实践。
首先是服务器端的代码:
```java
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
private ServerSocket serverSocket;
private Socket socket;
public Server(int port) throws IOException {
serverSocket = new ServerSocket(port);
System.out.println("服务器已启动,等待客户端连接...");
}
public void start() throws IOException {
while (true) {
socket = serverSocket.accept();
System.out.println("客户端已连接,IP 地址为:" + socket.getInetAddress());
new ServerThread(socket).start();
}
}
public static void main(String[] args) throws IOException {
Server server = new Server(8888);
server.start();
}
}
```
然后是服务器端的线程代码:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
public class ServerThread extends Thread {
private Socket socket;
private BufferedReader reader;
private OutputStreamWriter writer;
public ServerThread(Socket socket) throws IOException {
this.socket = socket;
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
writer = new OutputStreamWriter(socket.getOutputStream());
}
@Override
public void run() {
try {
String message;
while ((message = reader.readLine()) != null) {
System.out.println("收到客户端的消息:" + message);
writer.write(message + "\n");
writer.flush();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
最后是客户端的代码:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
public class Client {
private Socket socket;
private BufferedReader reader;
private OutputStreamWriter writer;
public Client(String host, int port) throws IOException {
socket = new Socket(host, port);
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
writer = new OutputStreamWriter(socket.getOutputStream());
System.out.println("已连接服务器,IP 地址为:" + socket.getInetAddress());
}
public void start() throws IOException {
BufferedReader inputReader = new BufferedReader(new InputStreamReader(System.in));
String inputMessage;
while ((inputMessage = inputReader.readLine()) != null) {
writer.write(inputMessage + "\n");
writer.flush();
String message = reader.readLine();
System.out.println("收到服务器的消息:" + message);
}
}
public static void main(String[] args) throws IOException {
Client client = new Client("localhost", 8888);
client.start();
}
}
```
这份代码实现了一个简单的 TCP 点对点文本通信,服务器端和客户端可以互相发送消息。你可以运行该程序并进行实验和学习。当然,这只是一个简单的示例,实际应用中还需要处理很多异常情况和安全问题。