使用TCP网络程序上传图片:编写服务器类PicUploadServer,该类包含一个Socket类型的私有属性,并提供了该属性的有参构造方法。PicUploadServer类实现Runnable接口,重写run()方法,在run()方法内读取客户端上传的图片,并将图片存入服务器指定文件夹中。编写客户端类PicUpLoadClient,该类实现了读取指定图片,向指定端口发送图片数据的功能。 编写测试类Example03,在main()方法中,通过指定的端口号创建ServerSocket对象,并编写死循环,在死循环中,通过ServerSocket对象获取Socket对象,并开启线程服务。
时间: 2023-12-10 21:38:37 浏览: 31
服务器端代码:
```java
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class PicUploadServer implements Runnable {
private Socket socket;
public PicUploadServer(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try {
InputStream is = socket.getInputStream();
String fileName = "upload/" + System.currentTimeMillis() + ".jpg";
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(fileName));
byte[] buffer = new byte[1024];
int len;
while ((len = is.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
bos.flush();
bos.close();
is.close();
socket.close();
System.out.println("图片上传成功,保存路径为:" + fileName);
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
客户端代码:
```java
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.net.Socket;
public class PicUploadClient {
public static void main(String[] args) {
String serverAddress = "localhost";
int port = 8888;
String filePath = "img/1.jpg";
try {
Socket socket = new Socket(serverAddress, port);
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(filePath));
OutputStream os = socket.getOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = bis.read(buffer)) != -1) {
os.write(buffer, 0, len);
}
os.flush();
os.close();
bis.close();
socket.close();
System.out.println("图片上传成功!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
测试类代码:
```java
import java.net.ServerSocket;
import java.net.Socket;
public class Example03 {
public static void main(String[] args) {
int port = 8888;
try {
ServerSocket serverSocket = new ServerSocket(port);
while (true) {
Socket socket = serverSocket.accept();
new Thread(new PicUploadServer(socket)).start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
```