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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 杜成龙 于 2013-10-24 09:06 编辑

今天一哥们让我传个文件给他,正好2周前看过网络编程,所以就想借机会试一下,我就写了个服务端的程序给他,然后我这边写了个客户端的程序,
结果,那哥们告诉我文件没传过去,我就在自己机子上试了下,还真是不行,但看到程序没有问题啊?所以想请高手帮看下,谢谢啦!
客户端程序:
  1.   import java.net.*;
  2.   import java.io.*;
  3.   class TextClient
  4.   {
  5.    public static void main(String[] args)throws Exception
  6.    {
  7.    BufferedReader bufr=new BufferedReader(new FileReader("UdpSend.java"));
  8.    Socket s=new Socket("127.0.0.1",10008);
  9.    PrintWriter out=new PrintWriter(s.getOutputStream(),true);
  10.    BufferedReader in=new BufferedReader(new InputStreamReader(s.getInputStream()));
  11.    String line=null;
  12.    while ((line=bufr.readLine())!=null)
  13.    {
  14.    out.println(line);
  15.    }
  16.    String str=in.readLine();
  17.    System.out.println(str);
  18.    bufr.close();
  19.    s.close();
  20.    }
  21.   }
复制代码
服务端程序:
  1.   import java.net.*;
  2.   import java.io.*;
  3.   class TextServer
  4.   {
  5.    public static void main(String[] args)throws Exception
  6.    {
  7.    ServerSocket ss=new ServerSocket(10008);
  8.    Socket s=ss.accept();
  9.    BufferedReader in=new BufferedReader(new InputStreamReader(s.getInputStream()));
  10.    PrintWriter out=new PrintWriter(s.getOutputStream(),true);
  11.    PrintWriter pw=new PrintWriter("server.txt");
  12.    String line=null;
  13.    while ((line=in.readLine())!=null)
  14.    {
  15.    pw.println(line);
  16.    pw.flush();
  17.    }
  18.    out.println("上传成功!");
  19.    pw.close();
  20.    s.close();
  21.    ss.close();
  22.    }
  23.   }
复制代码
运行程序后,发现文件确实没传过来!程序写的好像没问题啊?



评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

6 个回复

倒序浏览
是不是IP地址填错了呢。IP地址要填写服务端的密码,也就是服务器端的IP的。
回复 使用道具 举报
黑马戴帅军 发表于 2013-10-23 20:09
是不是IP地址填错了呢。IP地址要填写服务端的密码,也就是服务器端的IP的。 ...

应该不是,我在自己的机子上验证也不行啊!
回复 使用道具 举报
String ip = s.getInetAddress().getHostAddress()这句话怎么没有,在服务端
回复 使用道具 举报
月夜之鬼魅 发表于 2013-10-23 20:33
String ip = s.getInetAddress().getHostAddress()这句话怎么没有,在服务端

这个有没有不影响结果的~
回复 使用道具 举报
你这个问题老毕在视频上不是讲到过了么。
while ((line=bufr.readLine())!=null)
{
out.println(line);
}
这行下面加上s.shutdownOutput();
你要告诉服务端你已经写完了,否则当你把文件读取完后while循环结束,而服务器的read()是阻塞式的,它并没有收到结束信号,它就一直在那边读,所以会出现两边都在等的情况。
当你在while循环后面加上一句s.shutdownOutput();这个结束标志后,服务器那边的读取流就能收到结束信号。

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1 很给力!

查看全部评分

回复 使用道具 举报
张文豪 发表于 2013-10-23 22:24
你这个问题老毕在视频上不是讲到过了么。
while ((line=bufr.readLine())!=null)
{

是哈,咋把这给掉了,写程序时还真没想起这事儿,谢谢你哈~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马