使用TCP+多线程编程方式和DataOutputStream,DataInputStream实现基于Java的Scoket编程
时间: 2024-05-15 11:16:11 浏览: 113
JavaTCP-Socket.zip_JAVA socket编程_java socket _socket 聊天
TCP多线程编程方式和DataOutputStream、DataInputStream可用于实现基于Java的Socket编程,以下是实现步骤:
1. 创建ServerSocket对象,指定端口号,并调用accept()方法等待客户端连接。
2. 当客户端连接后,ServerSocket.accept()将返回一个Socket对象,可以利用该对象创建输入输出流。
3. 在服务器端,创建一个线程来处理连接的客户端,使用Socket对象的输入输出流来进行通信。
4. 在客户端,创建Socket对象连接服务器端,并使用Socket对象的输入输出流来进行通信。
5. 在服务器端,使用DataOutputStream向客户端发送数据,可以使用writeInt()、writeDouble()等方法发送不同类型的数据。
6. 在客户端,使用DataInputStream接收服务器端发送的数据,可以使用readInt()、readDouble()等方法接收不同类型的数据。
7. 在通信结束后,关闭Socket、ServerSocket对象和输入输出流。
以下是一个简单的示例代码:
服务器端:
```java
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(12345);
while (true) {
Socket socket = serverSocket.accept();
new Thread(() -> {
try {
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
dos.writeInt(123);
dos.writeDouble(3.14);
dos.writeUTF("Hello, client!");
dos.flush();
DataInputStream dis = new DataInputStream(socket.getInputStream());
int i = dis.readInt();
double d = dis.readDouble();
String s = dis.readUTF();
System.out.printf("Received data: %d, %f, %s\n", i, d, s);
dis.close();
dos.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}).start();
}
}
}
```
客户端:
```java
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("localhost", 12345);
DataInputStream dis = new DataInputStream(socket.getInputStream());
int i = dis.readInt();
double d = dis.readDouble();
String s = dis.readUTF();
System.out.printf("Received data: %d, %f, %s\n", i, d, s);
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
dos.writeInt(456);
dos.writeDouble(2.718);
dos.writeUTF("Hello, server!");
dos.flush();
dis.close();
dos.close();
socket.close();
}
}
```
阅读全文