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

📄 vxcv.java

📁 当我们编写JAVA应用程序时
💻 JAVA
字号:
import java.net.*;
import java.io.*;
class KKState{
  private static final int WAITING=0;
  private static final int SENTKNOCKKNOCK=1;
  private static final int SENTCLUE=2;
  private static final int ANOTHER=3;
  private static final int NUMJOKES=5;
  private int state=WAITING;
  private int currentJoke=0;
  private Stringclues={″Tumip″,″Little Old Lady″,″Atch″,″Who″;″Who″};
  private Stringanswers={″Turnip the heat,it′s cold in here!″,
     ″I didn′t know you could yodel!″,
     ″Bless you!″,
     ″Is there an owl in here?″,
     ″Is there an echo in here?″};
String processInput(String theInput){
String theOutput=null;
if(state==WAITING){
   theOutput=″Knock!Knock!″;
   state=SENTKNOCKKNOCK;
  } else if(state==SENTKNOCKKNOCK){
   if(theInput.equalsIgnoreCase(″Who′s there?″)){
    theOutput=clues[currentJoke];
    state=SENTCLUE;
  } else{
    theOutput=″You′re supposed to say″Who′s there?″!Try again.Knock!Knock!″;
   }
  }else if(state==SENTCLUE){
     if(theInput.equalsIgnoreCase(clues[currentJoke]+″who?″)){
     theOutput=answers[currentJoke]+″Want another?(y/n)″;
     state=ANOTHER;
   } else{
     theOutput=″You′re supposed to say″″+clues[currentJoke]+″who?″″+″!Try again.Knock!Knock!″;
   state=SENTKNOCKKNOCK;
   }
  } else if(state==ANOTHER){
   if(theInput.equalsIgnoreCase(″y″)){
    theOutput=″Knock!Knock!″;
    if(currentJoke==(NUMJOKES-1))
       currentJoke=0
    else
     currentJoke++;
    state=SENTKNOCKKNOCK;
   } else{
    theOutput=″Bye.″;
   state=WAITING;
   }
  }
  return theOutput;
 }
}
//服务器程序
class KnockKnockServer{
public static void main(String[]args){
   ServerSocket serverSocket=null;
   try {
      serverSocket=new ServerSocket(4444);// 创建服务器端socket
   }catch(IOException e){
   System.out.println(″Could not listen on port:″+4444+″,″+e;
   System.exit(1);
   }
  Socket clientSocket=null;
  try{
  clientSocket=serverSocket.accept();//监听申请连接到该socket的要求并建立连接
  }catch(IOException e){
  System.out.println(″Accept failed:″+4444+″,″+e);
  System.exit(1);
  }
  try{
  //通过客户端socket,获取输入数据流对象,通过它可以读入客户端输入的信息
  //通过客户端socket,获取输出数据流对象,通过它可以向客户端输入的信息
  DataInputStream is=new DataInputStream(new BufferedInputStream(clientSocket.getInputStream()));
  PrintStream os=new PrintStream(new BufferedOutputStream(clientSocket.getOutputStream(),1024),false);
  //KKState类用于处理输入的会话信息,然后返回设定好的回答
  KKState kks=new KKState():
  String inputLine,outputLine;
  outputLine=kks.processInput(null);
  os.println(outputLine);//第一次运行,输入参数为null,kks返回:″Knock!Knock!″;然后向客户端写入。
  0s.flush();
  //如果客户端没有输入,readLine将阻塞;如果客户端关闭,readLine返回为null。
  //在下面循环语句中,以读一行,再写一行的方式与客户交互。
  while((inputLine=is.readLine())!=null){
  outputLine=kks.processInput(inputLine);
     os.println(outputLine);
     os.flush();
     if(outputLine.equals(″Bye.″))break;
  }
  //以下完成清除工作。
  os.close();
  is.close();
  clientSocket.close();
  serverSocket.close();
  } catch(IOException e){
  e.printStackTrace();
  }
}
}

⌨️ 快捷键说明

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