tcp双人聊天代码实现java加线程
时间: 2023-10-22 17:12:36 浏览: 47
以下是一个简单的TCP双人聊天Java程序实现,并使用了线程:
Server端代码:
```java
import java.net.*;
import java.io.*;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(5000);
} catch (IOException e) {
System.err.println("Could not listen on port: 5000.");
System.exit(1);
}
System.out.println("Server started. Listening on port 5000...");
Socket clientSocket = null;
try {
clientSocket = serverSocket.accept();
} catch (IOException e) {
System.err.println("Accept failed.");
System.exit(1);
}
System.out.println("Client connected: " + clientSocket.getInetAddress().getHostName());
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
// Create a new thread for receiving messages from client
Thread receiverThread = new Thread(new Runnable() {
@Override
public void run() {
String inputLine;
try {
while ((inputLine = in.readLine()) != null) {
System.out.println("Client: " + inputLine);
}
} catch (IOException e) {
System.err.println("Receiver thread error.");
System.exit(1);
}
}
});
receiverThread.start();
// Main thread for sending messages to client
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String userInput;
try {
while ((userInput = stdIn.readLine()) != null) {
out.println(userInput);
}
} catch (IOException e) {
System.err.println("Sender thread error.");
System.exit(1);
}
out.close();
in.close();
clientSocket.close();
serverSocket.close();
}
}
```
Client端代码:
```java
import java.net.*;
import java.io.*;
public class Client {
public static void main(String[] args) throws IOException {
Socket serverSocket = null;
try {
serverSocket = new Socket("localhost", 5000);
} catch (UnknownHostException e) {
System.err.println("Unknown host: localhost.");
System.exit(1);
} catch (IOException e) {
System.err.println("Could not connect to localhost.");
System.exit(1);
}
System.out.println("Connected to server: " + serverSocket.getInetAddress().getHostName());
PrintWriter out = new PrintWriter(serverSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(serverSocket.getInputStream()));
// Create a new thread for receiving messages from server
Thread receiverThread = new Thread(new Runnable() {
@Override
public void run() {
String inputLine;
try {
while ((inputLine = in.readLine()) != null) {
System.out.println("Server: " + inputLine);
}
} catch (IOException e) {
System.err.println("Receiver thread error.");
System.exit(1);
}
}
});
receiverThread.start();
// Main thread for sending messages to server
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String userInput;
try {
while ((userInput = stdIn.readLine()) != null) {
out.println(userInput);
}
} catch (IOException e) {
System.err.println("Sender thread error.");
System.exit(1);
}
out.close();
in.close();
serverSocket.close();
}
}
```
在这个实现中,服务器和客户端都使用了一个线程来接收来自对方的消息,并使用主线程来发送消息。这个实现可能存在一些问题,比如没有处理异常或者没有关闭socket等,但可以作为一个简单的例子来理解TCP双人聊天的实现方式。