java 发送 tcp连接 完整版案例
时间: 2023-07-31 14:13:38 浏览: 86
下面是一个简单的Java TCP客户端和服务器端的示例,可以用来发送和接收消息:
服务器端代码:
```java
import java.net.*;
import java.io.*;
public class TCPServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = null;
try {
// 监听8888端口
serverSocket = new ServerSocket(8888);
} catch (IOException e) {
System.err.println("Could not listen on port: 8888.");
System.exit(1);
}
Socket clientSocket = null;
try {
System.out.println("Waiting for connection...");
// 等待客户端连接
clientSocket = serverSocket.accept();
} catch (IOException e) {
System.err.println("Accept failed.");
System.exit(1);
}
System.out.println("Connection successful");
// 初始化输入输出流
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String inputLine;
// 从客户端读取数据并回传
while ((inputLine = in.readLine()) != null) {
System.out.println("Received: " + inputLine);
out.println("Server Received: " + inputLine);
}
// 关闭资源
out.close();
in.close();
clientSocket.close();
serverSocket.close();
}
}
```
客户端代码:
```java
import java.io.*;
import java.net.*;
public class TCPClient {
public static void main(String[] args) throws IOException {
// 初始化输入输出流和Socket对象
Socket echoSocket = null;
PrintWriter out = null;
BufferedReader in = null;
try {
// 连接到服务器
echoSocket = new Socket("localhost", 8888);
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);
// 从服务器读取数据并输出到控制台
System.out.println("Server: " + in.readLine());
}
// 关闭资源
out.close();
in.close();
stdIn.close();
echoSocket.close();
}
}
```
这个示例程序中,服务器端监听8888端口,当有客户端连接时,会初始化输入输出流,并从客户端读取数据并回传。客户端连接到服务器,将从控制台读取数据并发送到服务器,然后从服务器读取数据并输出到控制台。