⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clientdemo.java

📁 JAVA类库参考手册
💻 JAVA
字号:
import java.io.*;
import java.net.*;

public class ClientDemo {
  public static void main(String[] args) throws IOException {

    Socket kkSocket = null;    //创建Socket类
    PrintWriter out = null;    //创建文件写出器
    BufferedReader in = null;  //创建文件读入器,主要应用该类的readLine()方法
    boolean runable = true;    //与服务器通话的状态
    String toServer;           //写到服务端的信息

    try {
      //通过1111Port使客户端接口与服务器接口联系
      kkSocket = new Socket("localhost", 8000);

      //分别建立接口的读入与写出器
      out = new PrintWriter(kkSocket.getOutputStream(), true);
      in = new BufferedReader(new InputStreamReader(kkSocket.
                              getInputStream()));
    } catch (UnknownHostException e) {
      System.err.println("找不到服务器");
      System.exit(1);
    } catch (IOException e) {
      System.err.println("不能获得Socket的读入与写出器");
      System.exit(1);
    }

    //通过键盘输入器建立另一个文件读入器
    BufferedReader stdIn = new BufferedReader(new InputStreamReader(
                                              System.in));

    //向服务器输入信息
    out.println("新的用户登陆");

    //建立显示服务端信息的线程
    ReadServerThread readServerThread = new ReadServerThread(in);
    readServerThread.start();  //启动线程

    //进入与服务器对话的循环
    while (runable) {
      //向服务器输入信息
      toServer = stdIn.readLine();
      out.println(toServer);
      //当输入的信息是"Bye."时,退出程序
      if (toServer.equals("Bye.")) break;
      runable = readServerThread.runable;  //获取线程的运行状态
    }

    readServerThread.fromServer = "欢迎下次再来.";
    readServerThread.runable = false;//关闭线程
    out.close();      //关闭文件写出器
    in.close();       //关闭文件读入器
    stdIn.close();    //关闭文件读入器
    kkSocket.close(); //关闭Socket类
  }
}

class ReadServerThread extends Thread {
  BufferedReader in = null;
  String fromServer = "";
  boolean runable = true;

  public ReadServerThread(BufferedReader in) {
    this.in = in;
  }

  public void run() {
    while(runable){
      //显示来自服务器的信息
      try{fromServer = in.readLine();}catch(Exception e){runable = false;}
       //当服务端输入Bye.时,客户端结束显示服务端信息与向服务端写入信息的两个循环
     if(fromServer.equals("Bye.")) {
        System.out.print("服务器程序退出");
        runable = false;     //结束向服务端写入信息循环
        break;               //结束显示服务端信息循环
      }
      System.out.println("服务器: " + fromServer);
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -