额 第一次发帖 如果有什么格式问题 还请谅解啊。。
如题 我在上基础课时照着编程的程序 传输图片的时候 生成的图片有误。
程序编译通过 能运行 就是结果有问题。
程序如下
import java.io.*;
import java.net.*;
class PicClient
{
public static void main(String[] args) throws Exception
{
if (args.length!=1)
{
System.out.println("请选择一个jpg格式的图片");
return;
}
File file = new File(args[0]);
if(!(file.exists() && file.isFile()))
{
System.out.println("该文件有问题");
return;
}
if (!(file.getName().endsWith(".jpg")))
{
System.out.println("该文件格式错误");
return;
}
if (file.length()>1024*1024*5)
{
System.out.println("该文件太大");
return;
}
Socket s = new Socket("192.168.1.103",10010);//
FileInputStream fis = new FileInputStream(file);
OutputStream out = s.getOutputStream();
byte[] buf = new byte[1024];
int len = 0;
while ((len=fis.read())!=-1)
{
out.write(buf,0,len);
}
//告诉服务端数据已写完
s.shutdownOutput();
InputStream in = s.getInputStream();
byte[] bufIn =new byte[1024];
int num = in.read(bufIn);
System.out.println(new String(bufIn,0,num));
fis.close();
s.close();
}
}
//定义线程
class PicThread implements Runnable
{
private Socket s;
PicThread(Socket s)
{
this.s = s;
}
public void run()
{
String ip = s.getInetAddress().getHostAddress();
try
{
int count = 1;
System.out.println("ip::"+ip+"..is connected..");
InputStream in = s.getInputStream();
File file = new File(ip+"("+(count)+").jpg");
while(file.exists())
{
file = new File(ip+"("+(count++)+").jpg");
}
FileOutputStream fos = new FileOutputStream(file);
byte[] buf = new byte[1024];
int len = 0;
while ((len=in.read(buf))!=-1)
{
fos.write(buf,0,len);
}
OutputStream out = s.getOutputStream();
out.write("上传成功".getBytes());
fos.close();
s.close();
}
catch (Exception e)
{
throw new RuntimeException(ip+"上传失败");
}
}
}
class PicServer
{
public static void main(String[] args) throws Exception
{
ServerSocket ss = new ServerSocket(10010);
while (true)
{
Socket s = ss.accept();
new Thread(new PicThread(s)).start();
}
//ss.close();
}
}
|