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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 牛海亮 中级黑马   /  2013-7-14 09:04  /  1258 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 牛海亮 于 2013-7-14 09:38 编辑

下面是代码,不知道是哪儿出错了,服务器端收不到客户端发送的数据。
LoginServer.java
  1. public class LoginServer
  2. {
  3. public static void main(String[] args)
  4. {
  5. try
  6. {
  7. ServerSocket ss= new ServerSocket(10009);
  8. while(true)
  9. {
  10. Socket s = ss.accept();
  11. new Thread(new UserThread(s)).start();

  12. }
  13. }
  14. catch (Exception e)
  15. {
  16. e.printStackTrace();
  17. }
  18. }

  19. }
复制代码
UserThread.java代码如下:
  1. public class UserThread implements Runnable
  2. {

  3. private Socket s;
  4. UserThread(Socket s )
  5. {
  6. this.s = s;

  7. }
  8. public void run()
  9. {
  10. try
  11. {
  12. String ip = s.getInetAddress().getHostAddress();
  13. System.out.println(ip+".....connected");

  14. for(int x=0; x<3; x++)
  15. {
  16. //获取网络输入流
  17. BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));

  18. String name = bufIn.readLine();

  19. System.out.println(name);
  20. //建立文件读取流
  21. BufferedReader bufr = new BufferedReader(new FileReader("user.txt"));
  22. //建立网络输出流
  23. PrintWriter out = new PrintWriter(s.getOutputStream(),true);
  24. String line = null;
  25. boolean flag = false;
  26. //从文件中读取并
  27. while((line = bufr.readLine())!=null)
  28. {
  29. if(line.equals(name))
  30. {
  31. flag = true;
  32. break;
  33. }
  34. }
  35. if(flag)
  36. {
  37. System.out.println(name+",已登录");
  38. out.println(name+",欢迎光临");
  39. break;

  40. }
  41. else
  42. {

  43. System.out.println(name+",尝试登录");
  44. out.println(name+",用户名不存在");
  45. }

  46. }

  47. }
  48. catch (Exception e)
  49. {
  50. throw new RuntimeException("校验失败");
  51. }

  52. }
  53. }
复制代码
LoginClient.java代码如下:
  1. public class LoginClient
  2. {
  3. public static void main(String[] args)
  4. {
  5. try
  6. {
  7. //定义客户端 端点
  8. Socket s = new Socket("127.0.0.1",10009);
  9. //键盘输入流
  10. BufferedReader bufr =
  11. new BufferedReader(new InputStreamReader(System.in));
  12. //网络输出流
  13. PrintWriter out = new PrintWriter(s.getOutputStream());
  14. //网络输入流
  15. BufferedReader bufIn =
  16. new BufferedReader(new InputStreamReader(s.getInputStream()));
  17. for(int x = 0; x < 3; x++)
  18. {
  19. //将键盘读取的字符存入line中
  20. String line = bufr.readLine();
  21. //通过网路输出流发送出去。
  22. if(line == null)
  23. {
  24. System.out.println("发送数据不能为空");
  25. break;
  26. }
  27. //通过网络输出流发送到服务端
  28. out.println(line);
  29. //接收服务端发送过来的信息
  30. String info = bufIn.readLine();
  31. System.out.println("info:"+info);
  32. if(info.contains("欢迎"))
  33. break;

  34. }
  35. bufr.close();
  36. s.close();
  37. }
  38. catch (Exception e)
  39. {
  40. e.printStackTrace();
  41. }


  42. }

  43. }
复制代码

4 个回复

倒序浏览
LoginClient.java中:
  PrintWriter out = new PrintWriter(s.getOutputStream());//没有启用自动刷新
  PrintWriter out = new PrintWriter(s.getOutputStream(),true)

out.println(line);
out.flush();
回复 使用道具 举报
明白了,O(∩_∩)O谢谢
回复 使用道具 举报
哥们,怎么不格式化下代码啊?
回复 使用道具 举报
不会啊{:soso_e136:},怎么弄啊,能教教不?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马