使用TCP网络程序上传图片:编写服务器类PicUploadServer,该类包含一个Socket类型的私有属性,并提供了该属性的有参构造方法。PicUploadServer类实现Runnable接口,重写run()方法,在run()方法内读取客户端上传的图片,并将图片存入服务器指定文件夹中。编写客户端类PicUpLoadClient,该类实现了读取指定图片,向指定端口发送图片数据的功能。 编写测试类Example03,在main()方法中,通过指定的端口号创建ServerSocket对象,并编写死循环,在
时间: 2024-03-05 10:47:24 浏览: 57
循环中使用accept()方法接收客户端的连接请求,并创建PicUploadServer对象,并将该对象作为参数传入Thread的构造方法中,最后调用start()方法启动线程。客户端通过Socket与服务器建立连接,并将指定的图片数据发送给服务器。
以下是PicUploadServer的代码实现:
```java
import java.io.*;
import java.net.*;
public class PicUploadServer implements Runnable {
private Socket socket;
public PicUploadServer(Socket socket) {
this.socket = socket;
}
public void run() {
try {
// 获取输入流
InputStream in = socket.getInputStream();
// 创建文件输出流
File file = new File("D:/upload/pic.jpg");
FileOutputStream fos = new FileOutputStream(file);
// 读取数据并写入文件
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) != -1) {
fos.write(buf, 0, len);
}
// 关闭流
fos.close();
in.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
以下是PicUploadClient的代码实现:
```java
import java.io.*;
import java.net.*;
public class PicUploadClient {
public static void main(String[] args) throws Exception {
// 创建Socket并连接到服务器
Socket socket = new Socket("localhost", 8888);
// 获取输出流
OutputStream out = socket.getOutputStream();
// 读取图片数据
File file = new File("D:/upload/pic.jpg");
FileInputStream fis = new FileInputStream(file);
byte[] buf = new byte[1024];
int len;
while ((len = fis.read(buf)) != -1) {
out.write(buf, 0, len);
}
// 关闭流
fis.close();
out.close();
socket.close();
}
}
```
以下是Example03的代码实现:
```java
import java.io.*;
import java.net.*;
public class Example03 {
public static void main(String[] args) throws Exception {
// 创建ServerSocket并指定端口号
ServerSocket serverSocket = new ServerSocket(8888);
// 死循环,接收客户端连接
while (true) {
Socket socket = serverSocket.accept();
// 创建PicUploadServer对象,并作为参数传入Thread的构造方法
PicUploadServer server = new PicUploadServer(socket);
Thread thread = new Thread(server);
thread.start();
}
}
}
```
阅读全文