A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王--明 黑马帝   /  2012-2-29 20:11  /  2256 人查看  /  3 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

问下大家,有没有遇见Connection reset这种异常,连接重置,首先我排除了,程序的问题,搜了很多关于的这个问题的解释,但几种情况我也排除了,确实不知道怎么处理了。所以求教大家。程序就是毕老师的网络编程中图片上传,编译时没问题,运行出了问题。
import java.io.*;
import java.net.*;
class PicClient
{
      public static void main(String[] args) throws Exception
      {
                Socket s = new Socket("192.168.1.101",10011);
                        
                         FileInputStream fis = new FileInputStream("C:\\1.jpg");
                        
                         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(10011);
                        
                         Socket s = ss.accept();
                         String ip = s.getInetAddress().getHostAddress();
                         System.out.println(ip+"::::");
                        
                         InputStream in = s.getInputStream();
                        
                         FileOutputStream fos = new FileOutputStream("2.jpg");
                        
                        
                         byte[] buf = new byte[1024];
                         int len = 0;
                         while((len=in.read(buf))!=-1);
                         {
                                                
                                 fos.write(buf,0,len);
                                 System.out.println(len);
                         }
                        
                        
                         OutputStream out = s.getOutputStream();
                         out.write("上传成功".getBytes());
                        
                         fos.close();
                         s.close();
                         ss.close();
                        
      }
}


该贴已经同步到 王--明的微博

未命名.jpg (21.78 KB, 下载次数: 31)

未命名.jpg

评分

参与人数 2技术分 +4 收起 理由
admin + 1 比较有质量,大家学习下!
老罗 + 3 告诉你,我喜欢这样的提问

查看全部评分

3 个回复

倒序浏览
谢谢老罗的支持,我会更加努力的!!!
回复 使用道具 举报
你的服务器端和客户端的输入输出是不是写反啦?客户端不是InputStream,服务器端是OutputStream吗?
回复 使用道具 举报
是没有问题的,
客户端:
定义端点
1:先关联文件
2:发送文件数据,
3:发送完了告诉服务端,我发完了。所以shutdownOutput()
4:服务端接受到数据给客户端反馈信息。客户端应该读取把。所以InputStream
5:关闭资源
思路就是这样的。我想应该没问题啊。问题困扰了我一个晚上,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马