本帖最后由 leo_lzj 于 2014-5-24 19:34 编辑
我在观看毕老师的视屏教程的时候,照着他的程序写了一遍,程序和他的一模一样的,他能够上传成功,但是为什么我的程序就出现了异常呢?
程序如下:
- /*
- 客户端:
- 1.服务,端点
- 2.读取客户端已有的图片数据
- 3.通过socket输出流将数据发给服务端
- 4.读取服务端反馈信息
- 5.关闭资源
- */
- import java.io.*;
- import java.net.*;
- class PicClient
- {
- public static void main(String[] args) throws Exception
- {
- Socket s = new Socket("172.23.13.5",6666);
- FileInputStream fis = new FileInputStream("c:\\1.png");
- //将数据传送到网络流上
- OutputStream out = s.getOutputStream();
- byte[] buf = new byte[1024];
- int len = 0;
- while((len=fis.read(buf))!=-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 PicServer
- {
- public static void main(String[] args)throws Exception
- {
- ServerSocket ss = new ServerSocket(6666);
-
- Socket s = ss.accept();
- String ip = s.getInetAddress().getHostAddress();
- System.out.println(ip+".......connected");
-
- InputStream in = s.getInputStream();
- FileOutputStream fos = new FileOutputStream("server.png");
-
- 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();
- ss.close();
- }
- }
复制代码 问题:
1.客户端服务端的读写数据缓冲字节数组都设置的是1024,毕老师也是,上传了3M的图片,成功,而我上传了一个300KB的图片都没有成功,问题在哪儿?
2.编译能够通过,同时客户端也能够连接到到服务端,在服务端的从网络流读取到数据写入文件的时候报了数组角标越界异常,为什么会这样?
3.我尝试将1024改成了1024*300,还是出现同样的问题。请高手帮忙解答找找原因?谢谢
见图:
|
|