使用TCP网络程序上传图片:编写服务器类PicUploadServer,该类包含一个Socket类型的私有属性,并提供了该属性的有参构造方法。PicUploadServer类实现Runnable接口,重写run()方法,在run()方法内读取客户端上传的图片,并将图片存入服务器指定文件夹中。编写客户端类PicUpLoadClient,该类实现了读取指定图片,向指定端口发送图片数据的功能。 编写测试类Example03,在main()方法中,通过指定的端口号创建ServerSocket对象,并编写死循环,在死循环中,通过ServerSocket对象获取Socket对象,并开启线程服务。
时间: 2023-12-18 07:05:37 浏览: 70
以下是示例代码:
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();
// 获取输出流
OutputStream os = new FileOutputStream("D:/server/pic.jpg");
// 缓冲数组
byte[] buffer = new byte[1024];
int len;
// 读取客户端上传的图片数据,并写入文件
while ((len = is.read(buffer)) != -1) {
os.write(buffer, 0, len);
}
System.out.println("图片上传成功!");
// 关闭流和Socket连接
os.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) {
try {
// 指定服务器地址和端口号
InetAddress serverAddr = InetAddress.getByName("localhost");
int port = 8888;
// 创建Socket对象
Socket socket = new Socket(serverAddr, port);
// 创建输入流,读取指定图片
InputStream is = new FileInputStream("D:/client/pic.jpg");
// 获取输出流
OutputStream os = socket.getOutputStream();
// 缓冲数组
byte[] buffer = new byte[1024];
int len;
// 将读取的图片数据发送给服务器
while ((len = is.read(buffer)) != -1) {
os.write(buffer, 0, len);
}
System.out.println("图片上传成功!");
// 关闭流和Socket连接
os.close();
is.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
Example03.java:
```java
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Example03 {
public static void main(String[] args) {
try {
// 指定端口号
int port = 8888;
// 创建ServerSocket对象
ServerSocket serverSocket = new ServerSocket(port);
System.out.println("服务器已启动...");
while (true) {
// 获取Socket对象
Socket socket = serverSocket.accept();
// 创建PicUploadServer对象,并开启线程服务
PicUploadServer server = new PicUploadServer(socket);
new Thread(server).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
阅读全文