黑马程序员技术交流社区
标题:
tcp图片上传
[打印本页]
作者:
光sail
时间:
2012-4-30 17:19
标题:
tcp图片上传
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class UploadImage {
public static void main(String[] args) {
}
}
class ImageClient{
public static void main(String[] args) throws Exception{
Socket imageClientSocket = new Socket("192.168.0.107",10010);
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("E:\\1.jpg"));
BufferedOutputStream bos = new BufferedOutputStream(imageClientSocket.getOutputStream());
byte[] buf = new byte[1024];
int len = 0 ;
while((len=bis.read(buf))!=-1){
bos.write(buf,0,len);
}
imageClientSocket.shutdownOutput();
BufferedInputStream bis2 = new BufferedInputStream(imageClientSocket.getInputStream());
byte[] buf2 = new byte[1024];
int len2 = 0 ;
while((len2=bis2.read(buf2))!=-1){
System.out.println(new String(buf2,0,len2));
}
bis.close();
imageClientSocket.close();
}
}
class ImageServer{
public static void main(String[] args) throws Exception{
ServerSocket ss = new ServerSocket(10010);
Socket s = ss.accept();
BufferedInputStream bis = new BufferedInputStream(s.getInputStream());
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("e:\\01.jpg"));
byte[] buf = new byte[1024];
int len = 0 ;
while((len=bis.read(buf))!=-1){
bos.write(buf, 0, len);
}
BufferedOutputStream bos2 = new BufferedOutputStream(s.getOutputStream());
bos2.write("upload successful".getBytes());
bos2.close();
s.close();
ss.close();
}
}
复制代码
连接服务端时,文件没拷贝成功,只建立个空的图片 端口也没被占用
报出的异常是 Exception in thread "main" java.io.FileNotFoundException: E:\1.jpg (系统找不到指
定的文件。)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at java.io.FileInputStream.<init>(FileInputStream.java:66)
at ImageClient.main(UploadImage.java:23)
,找不到文件,可是文件就存在E盘下,
我用的是深度xp纯净版的系统,是不是访问权限设置的问题
作者:
陈苓
时间:
2012-4-30 17:21
找不到文件异常,你少输了个反斜杠E:
\\
1.jpg (系统找不到指
作者:
光sail
时间:
2012-4-30 17:50
格式化 发表于 2012-4-30 17:21
找不到文件异常,你少输了个反斜杠E:\\1.jpg (系统找不到指
没少,输了两个\\
作者:
陈苓
时间:
2012-4-30 18:13
我刚把IP地址改成了127.0.0.1运行成功啦。一般建议没有路由器使用本机硬件默认ip
作者:
王杰
时间:
2012-4-30 21:10
本帖最后由 王杰 于 2012-4-30 21:12 编辑
while((len=bis.read(buf))!=-1){
bos.write(buf,0,len);
}
你没有刷新
作者:
林德燚
时间:
2012-4-30 21:56
bos没关流;在流里没写入到文件
作者:
张小锋
时间:
2012-5-2 13:52
public class UploadImage {
public static void main(String[] args) {
}
}
class ImageClient{
public static void main(String[] args) throws Exception{
你的这个程序里出现了两个类,并且每个类中都有main函数,程序会执行public类里的那个main函数,结果就相当于什么都没做。
再则,这个如果改了过来,你的程序还是会有问题,因为每次执行bufferedOutPutStream流的write方法后,你没有调用flush方法。
导致读写的数据很可能不完整,所以你显示的图片可能是一张不完整的图片。
作者:
蒋亮
时间:
2012-5-2 17:10
就报错信息来看的话,你E盘下没有1.jpg文件,刷不刷新无所谓,反正要close的,close执行的时候会先调用flush()刷新的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2