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

© HM汪磊 高级黑马   /  2013-4-7 19:07  /  1728 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 HM汪磊 于 2013-4-8 20:12 编辑
  1. /*
  2. 需求:上传图片。



  3. */
  4. /*
  5. 客户端。
  6. 1,服务端点。
  7. 2,读取客户端已有的图片数据。
  8. 3,通过socket 输出流将数据发给服务端。
  9. 4,读取服务端反馈信息。
  10. 5,关闭。

  11. */
  12. import java.io.*;
  13. import java.net.*;

  14. class PicClient
  15. {
  16. public static void main(String[] args) throws Exception
  17. {
  18. Socket s=new Socket("175.49.151.176",10003);

  19. FileInputStream fis=new FileInputStream("c:\\java\\javacx\\day23\\1.bmp");

  20. OutputStream out=s.getOutputStream();

  21. int len=0;

  22. byte[] buf=new byte[1024];

  23. while((len=fis.read(buf))!=-1)
  24. {
  25. out.write(buf,0,len);
  26. }
  27. //告诉服务端数据已写完
  28. s.shutdownOutput();

  29. InputStream in=s.getInputStream();

  30. byte[] bufIn=new byte[1024];

  31. int num=in.read(bufIn);

  32. System.out.println(new String(bufIn,0,num));

  33. fis.close();
  34. s.close();
  35. }
  36. }
  37. /*
  38. 服务端
  39. */

  40. class PicServer
  41. {
  42. public static void main(String[] args) throws Exception
  43. {
  44. ServerSocket ss=new ServerSocket(10003);

  45. Socket s=ss.accept();

  46. InputStream in=s.getInputStream();

  47. FileOutputStream fos=new FileOutputStream("2.bmp");

  48. byte[] buf=new byte[1024];

  49. int len=0;

  50. while((len=in.read(buf))!=-1)
  51. {
  52. fos.write(buf,0,len);
  53. }

  54. OutputStream out=s.getOutputStream();

  55. out.write("上传成功".getBytes());

  56. fos.close();
  57. s.close();
  58. ss.close();


  59. }
  60. }


复制代码
为什么我写的毕老师视频里程序编译时老出错????
提醒如下:
Exception in thread "main" java.net.ConnectException: Connection refused: connec
t
        at java.net.DualStackPlainSocketImpl.connect0(Native Method)
        at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketI
mpl.java:69)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.ja
va:339)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocket
Impl.java:200)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java
:182)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
        at java.net.Socket.connect(Socket.java:579)
        at java.net.Socket.connect(Socket.java:528)
        at java.net.Socket.<init>(Socket.java:425)
        at java.net.Socket.<init>(Socket.java:208)
        at PicClient.main(PicDemo.java:8)


评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

3 个回复

倒序浏览
Socket s=new Socket("175.49.151.176",10003);这句里的ip要写你的主机所在的ip地址。请在dos中输入ipconfig命令获取ip地址,或者编程,利用System.out.println(InetAddress.getLocalHost().getHostAddress());该句打印你当前的ip地址,并保证你的c:\\java\\javacx\\day23\\1.bmp路径是存在的,那么你的程序运行肯定是没问题的。我在我电脑上弄了没问题的,希望能帮到你哦

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
connection refused错误可能意味着服务器根本就没在听该端口,或者也可能意味着防火墙阻止连接到它。 您需要启动服务器,然后运行客户端。 此外,在Windows防火墙中添加例外。
你如果是在本机上试的话
Socket s=new Socket("175.49.151.176",10003);
可以改成Socket s=new Socket("127.0.0.1",10003);
我在我电脑上编译是没问题的。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
若还有问题,继续追问; 没有的话将帖子分类改成【已解决】哦~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马