黑马程序员技术交流社区
标题:
关于TCP多线程上传图片
[打印本页]
作者:
王梁星
时间:
2012-10-9 11:15
标题:
关于TCP多线程上传图片
本帖最后由 缘木求鱼 于 2012-10-14 20:08 编辑
问题在13、37行:
为什么缓冲区行不通?
注:这个问题有段时间了,我又编辑了遍,复制就能运行的。
<div class="blockcode"><blockquote>//IPTCPUploadPic.java
import java.net.*;
import java.io.*;
class PicClient{
public static void main(String[] args)throws Exception{
Socket s=new Socket("127.0.0.1",1200);
BufferedReader br=new BufferedReader(new FileReader("end1.bmp"));
OutputStream os=s.getOutputStream();
byte[] buf=new byte[1024];
int len=0;
while((len=br.read(buf))!=-1)
os.write(buf,0,len);//?报错?
s.shutdownOutput();
InputStream is=s.getInputStream();
byte[] bufin=new byte[1024];
int num=is.read(bufin);
System.out.println(new String(bufin,0,num));
br.close();
s.close();
}
}
class PicServer{
public static void main(String[] args)throws Exception{
ServerSocket ss=new ServerSocket(1200);
Socket s=ss.accept();
String ip=s.getInetAddress().getHostAddress();
System.out.println("["+ip+"]");
BufferedReader br=
new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter pw=new PrintWriter(new FileWriter("end3.bmp"),true);
FileOutputStream fos=new FileOutputStream("end3.bmp");
byte[] buf=new byte[1024];
int num=0;
while((num=br.read(buf))!=-1)
pw.println(num);//?与13行报相同的错?
PrintWriter pww=new PrintWriter(s.getOutputStream(),true);
pww.println("upload successful");
br.close();
s.close();
ss.close();
}
}
复制代码
作者:
唐增友
时间:
2012-10-9 11:39
好像没有错误啊,只是警告
说没被使用
br没有关闭
作者:
王梁星
时间:
2012-10-9 22:51
唐增友 发表于 2012-10-9 11:39
好像没有错误啊,只是警告
说没被使用
br没有关闭
不,这下错误来了。我有编辑了遍。自己再试试?
作者:
qhasilver
时间:
2012-10-14 15:55
import java.net.*;
import java.io.*;
class PicClient {
public static void main(String[] args) throws Exception {
Socket s = new Socket("127.0.0.1", 1200);
BufferedInputStream br = new BufferedInputStream(new FileInputStream(
"E:\\hi.jpg"));
OutputStream os = s.getOutputStream();
byte[] buf = new byte[1024];
int len = 0;
while ((len = br.read(buf)) != -1) {
os.write(buf, 0, len);
}
s.shutdownOutput();
br.close();
s.close();
}
}
class PicServer {
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(1200);
Socket s = ss.accept();
String ip = s.getInetAddress().getHostAddress();
System.out.println("[" + ip + "]");
InputStream is = s.getInputStream();//获得输入流
BufferedInputStream bos = new BufferedInputStream(is);//缓冲区
FileOutputStream fos = new FileOutputStream("d:\\haha.jpg");
byte[] buf = new byte[1024];
int num = 0;
while ((num = bos.read(buf)) != -1) {
fos.write(buf, 0, num);
}
System.out.println("upload successful");
fos.close();
bos.close();
is.close();
s.close();
ss.close();
}
}
复制代码
不晓得是不是你想要的
作者:
王梁星
时间:
2012-10-14 20:08
qhasilver 发表于 2012-10-14 15:55
不晓得是不是你想要的
通过看你提供的代码,我已经知道哪里的问题了。只能说,基础掌握的真是不牢阿
谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2