使用TCP网络程序上传图片:编写服务器类PicUploadServer,该类包含一个Socket类型的私有属性,并提供了该属性的有参构造方法。PicUploadServer类实现Runnable接口,重写run()方法,在run()方法内读取客户端上传的图片,并将图片存入服务器指定文件夹中。编写客户端类PicUpLoadClient,该类实现了读取指定图片,向指定端口发送图片数据的功能。 编写测试类Example03,在main()方法中,通过指定的端口号创建ServerSocket对象,并编写死循环,在死循环中,通过ServerSocket对象获取Socket对象,并开启线程服务。
时间: 2023-12-10 22:39:30 浏览: 68
基于TCP图片文件的传输
下面是实现上述要求的代码:
PicUploadServer.java
```java
import java.io.*;
import java.net.*;
public class PicUploadServer implements Runnable {
private Socket socket;
public PicUploadServer(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try {
// 获取输入流
InputStream is = socket.getInputStream();
// 创建文件输出流
File file = new File("server/uploads/" + System.currentTimeMillis() + ".png");
FileOutputStream fos = new FileOutputStream(file);
// 读取数据并写入文件
byte[] buffer = new byte[1024];
int len;
while ((len = is.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
// 关闭流
fos.close();
is.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
PicUpLoadClient.java
```java
import java.io.*;
import java.net.*;
public class PicUpLoadClient {
public static void main(String[] args) throws IOException {
// 读取指定图片
File file = new File("client/pic.png");
FileInputStream fis = new FileInputStream(file);
// 创建Socket对象
Socket socket = new Socket("localhost", 8888);
// 获取输出流
OutputStream os = socket.getOutputStream();
// 发送数据
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) != -1) {
os.write(buffer, 0, len);
}
// 关闭流
fis.close();
os.close();
socket.close();
}
}
```
Example03.java
```java
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Example03 {
public static void main(String[] args) throws IOException {
// 创建ServerSocket对象
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务器已启动,等待客户端连接...");
while (true) {
// 获取Socket对象
Socket socket = serverSocket.accept();
// 开启线程服务
new Thread(new PicUploadServer(socket)).start();
}
}
}
```
注意:在运行代码前需要先创建两个文件夹,一个用于存放客户端要上传的图片,一个用于存放服务器接收到的图片。如下图所示:
```
|-client
| |-pic.png
|
|-server
| |-uploads
|
|-Example03.java
|-PicUpLoadClient.java
|-PicUploadServer.java
```
运行Example03.java后,再运行PicUpLoadClient.java即可上传图片。上传成功后,服务器保存的图片会放在server/uploads文件夹中。
阅读全文