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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈延真 中级黑马   /  2013-6-10 20:54  /  1423 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//需求:用TCP协议,验证密码并给予反馈

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerDemo {
public static void main(String[] args) throws IOException {
  // 创建服务器Socket对象
  ServerSocket ss = new ServerSocket(10000);
  Socket s = ss.accept();
  BufferedReader br = new BufferedReader(new InputStreamReader(
    s.getInputStream()));
  
  PrintWriter pw = new PrintWriter(s.getOutputStream(), true);
  while(true){
   String passworld = br.readLine();
   if ("345678".equals(passworld)) {
    pw.println("密码正确");
   } else {
    pw.println("密码有误");
   }
  }
  s.close();//有错
  ss.close();
}
}

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class ClientDemo {
public static void main(String[] args) throws IOException {
  // 创建客户端Socket对象
  Socket s = new Socket("192.168.3.185", 10000);
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  String passworld = null;
  for(int x = 0;x<3;x++){
   System.out.println("请输入密码:");
   passworld = br.readLine();
  }
  PrintWriter pw = new PrintWriter(s.getOutputStream(), true);
  pw.println(passworld);
  BufferedReader brServer = new BufferedReader(new InputStreamReader(
    s.getInputStream()));
  String server = brServer.readLine();
  System.out.println("server:" + server);
  br.close();
  s.close();
}
}

评分

参与人数 1技术分 +1 收起 理由
黑马伍哲沂 + 1 神马都是浮云

查看全部评分

3 个回复

倒序浏览
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerDemo {
public static void main(String[] args) throws IOException {
   // 创建服务器Socket对象
   ServerSocket ss = new ServerSocket(10000);
   Socket s = ss.accept();
   BufferedReader br = new BufferedReader(new InputStreamReader(
     s.getInputStream()));
   
   PrintWriter pw = new PrintWriter(s.getOutputStream(), true);
   while(true){
    String passworld = br.readLine();
    if ("345678".equals(passworld)) {
     pw.println("密码正确");
    } else {
     pw.println("密码有误");
    }
   }
   s.close();//有错
   ss.close();
}
}
既然用了while循环,那么服务器是不需要关闭的。你要是关闭了话还怎么循环啊。

评分

参与人数 1技术分 +1 收起 理由
黑马伍哲沂 + 1 很给力!

查看全部评分

回复 使用道具 举报
j816326 发表于 2013-6-10 21:28
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

我们用读取流读取数据的时候,也是用的循环读取啊,那个也能释放资源的呀。
回复 使用道具 举报
你要是用了while死循环的话,那你就不能释放资源,不然没有意义。如果去掉循环,就OK了  。 在实际开发中的服务器,一般都是不需要关闭的,只在夜间的某个时段,清理一下。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马