您的位置:首页 > 理论基础 > 计算机网络

Java学习之TCP上传图片

2015-03-28 21:16 417 查看
import java.io.*;
import java.net.*;

class Client2 {
public static void main(String[] args) throws Exception {

File file = new File(args[0]);

if (!file.exists() || file.isDirectory()) {
sopln("文件不存在或不是文件");
return;
}

if (!args[0].endsWith(".jpg")) {
sopln("图片格式错误,请上传jpg格式!");
return;
}

if (file.length() >= 1024*1024*5) {
sopln("图片过大!");
return;
}

Socket s = new Socket("192.168.1.100", 10086);
FileInputStream fis = new FileInputStream(file);
OutputStream os = s.getOutputStream();
InputStream is = s.getInputStream();
byte[] buf = new byte[1024];
int len = 0;
while ((len=fis.read(buf)) != -1) {
os.write(buf, 0, len);
}
s.shutdownOutput();
int num = is.read(buf);
sopln(new String(buf, 0, num));
fis.close();
s.close();
}

public static void sopln(Object obj) {
System.out.println(obj);
}
}

class Server2 {
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(10086);
while (true) {
Socket s = ss.accept();
new Thread(new PicThread(s)).start();
}
}

public static void sopln(Object obj) {
System.out.println(obj);
}
}

class PicThread implements Runnable {
private Socket s;

PicThread(Socket s) {
this.s = s;
}

public void run() {
try {
String ip = s.getInetAddress().getHostAddress();
String name = s.getInetAddress().getHostName();
InputStream is = s.getInputStream();
int count = 1;
File file = new File(name + ".jpg");
while (file.exists()) {
file = new File(name + "(" + (count++) + ")" + ".jpg");
}
FileOutputStream fos = new FileOutputStream(file);
byte[] buf = new byte[1024];
int len = 0;
while ((len=is.read(buf)) != -1) {
fos.write(buf, 0, len);
}
OutputStream os = s.getOutputStream();
os.write("上传成功".getBytes());
fos.close();
s.close();
} catch (Exception e) {
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: