黑马程序员技术交流社区
标题:
TCP传输出现问题
[打印本页]
作者:
天之饺子
时间:
2015-6-25 12:18
标题:
TCP传输出现问题
额 第一次发帖 如果有什么格式问题 还请谅解啊。。
如题 我在上基础课时照着编程的程序 传输图片的时候 生成的图片有误。
程序编译通过 能运行 就是结果有问题。
程序如下
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();
}
}
作者:
伟大的骗子
时间:
2015-6-25 12:32
啊~学习学习
作者:
guohaichang
时间:
2015-6-25 13:31
while ((len=fis.read())!=-1)
{
out.write(buf,0,len);
}
//告诉服务端数据已写完
s.shutdownOutput();
这里的read里缺少参数buf
作者:
天之饺子
时间:
2015-6-25 13:36
额 行了 谢谢了 开始的时候下面服务端也少了 我给加了上去 上面客户端的给忘记了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2