`
kayo
  • 浏览: 547608 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

Client and Server Demo

阅读更多
Client and Server Demo 打印
/* From http://java.sun.com/docs/books/tutorial/index.html */
import  java.io.BufferedReader;
import  java.io.IOException;
import  java.io.InputStreamReader;
import  java.io.PrintWriter;
import  java.net.Socket;
import  java.net.UnknownHostException;

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

         Socket echoSocket =  null ;
         PrintWriter out =  null ;
         BufferedReader in =  null ;

         try  {
             echoSocket =  new  Socket ( "taranis" 7 ) ;
             out =  new  PrintWriter ( echoSocket.getOutputStream () true ) ;
             in =  new  BufferedReader ( new  InputStreamReader (
                                         echoSocket.getInputStream ())) ;
         catch  ( UnknownHostException e ) {
             System.err.println ( "Don't know about host: taranis." ) ;
             System.exit ( 1 ) ;
         catch  ( IOException e ) {
             System.err.println ( "Couldn't get I/O for "
                                "the connection to: taranis." ) ;
             System.exit ( 1 ) ;
         }

   BufferedReader stdIn =  new  BufferedReader (
                                    new  InputStreamReader ( System.in )) ;
   String userInput;

   while  (( userInput = stdIn.readLine ())  !=  null ) {
       out.println ( userInput ) ;
       System.out.println ( "echo: "  + in.readLine ()) ;
   }

   out.close () ;
   in.close () ;
   stdIn.close () ;
   echoSocket.close () ;
     }
}

////////////////////////////////////////////////////////////


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  KnockKnockServer  {
   public static  void  main ( String []  args throws  IOException  {

     ServerSocket serverSocket =  null ;
     try  {
       serverSocket =  new  ServerSocket ( 4444 ) ;
     catch  ( IOException e ) {
       System.err.println ( "Could not listen on port: 4444." ) ;
       System.exit ( 1 ) ;
     }

     Socket clientSocket =  null ;
     try  {
       clientSocket = serverSocket.accept () ;
     catch  ( IOException e ) {
       System.err.println ( "Accept failed." ) ;
       System.exit ( 1 ) ;
     }

     PrintWriter out =  new  PrintWriter ( clientSocket.getOutputStream () true ) ;
     BufferedReader in =  new  BufferedReader ( new  InputStreamReader (
         clientSocket.getInputStream ())) ;
     String inputLine, outputLine;
     KnockKnockProtocol kkp =  new  KnockKnockProtocol () ;

     outputLine = kkp.processInput ( null ) ;
     out.println ( outputLine ) ;

     while  (( inputLine = in.readLine ())  !=  null ) {
       outputLine = kkp.processInput ( inputLine ) ;
       out.println ( outputLine ) ;
       if  ( outputLine.equals ( "Bye." ))
         break ;
     }
     out.close () ;
     in.close () ;
     clientSocket.close () ;
     serverSocket.close () ;
   }
}

class  KnockKnockProtocol  {
   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  String []  clues =  "Turnip" "Little Old Lady" "Atch" "Who" ,
       "Who"  } ;

   private  String []  answers =  "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?"  } ;

   public  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;
   }
}

////////////////////////////////////////////////////////////


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  KKMultiServer  {
   public static  void  main ( String []  args throws  IOException  {
     ServerSocket serverSocket =  null ;
     boolean  listening =  true ;

     try  {
       serverSocket =  new  ServerSocket ( 4444 ) ;
     catch  ( IOException e ) {
       System.err.println ( "Could not listen on port: 4444." ) ;
       System.exit ( - 1 ) ;
     }

     while  ( listening )
       new  KKMultiServerThread ( serverSocket.accept ()) .start () ;

     serverSocket.close () ;
   }
}

class  KKMultiServerThread  extends  Thread  {
   private  Socket socket =  null ;

   public  KKMultiServerThread ( Socket socket ) {
     super ( "KKMultiServerThread" ) ;
     this .socket = socket;
   }

   public  void  run () {

     try  {
       PrintWriter out =  new  PrintWriter ( socket.getOutputStream () true ) ;
       BufferedReader in =  new  BufferedReader ( new  InputStreamReader ( socket
           .getInputStream ())) ;

       String inputLine, outputLine;
       KnockKnockProtocol kkp =  new  KnockKnockProtocol () ;
       outputLine = kkp.processInput ( null ) ;
       out.println ( outputLine ) ;

       while  (( inputLine = in.readLine ())  !=  null ) {
         outputLine = kkp.processInput ( inputLine ) ;
         out.println ( outputLine ) ;
         if  ( outputLine.equals ( "Bye" ))
           break ;
       }
       out.close () ;
       in.close () ;
       socket.close () ;

     catch  ( IOException e ) {
       e.printStackTrace () ;
     }
   }
}

class  KnockKnockProtocol  {
   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  String []  clues =  "Turnip" "Little Old Lady" "Atch" "Who" ,
       "Who"  } ;

   private  String []  answers =  "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?"  } ;

   public  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;
   }
}

////////////////////////////////////////////////////////////


import  java.io.BufferedReader;
import  java.io.IOException;
import  java.io.InputStreamReader;
import  java.io.PrintWriter;
import  java.net.Socket;
import  java.net.UnknownHostException;

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

     Socket kkSocket =  null ;
     PrintWriter out =  null ;
     BufferedReader in =  null ;

     try  {
       kkSocket =  new  Socket ( "taranis" 4444 ) ;
       out =  new  PrintWriter ( kkSocket.getOutputStream () true ) ;
       in =  new  BufferedReader ( new  InputStreamReader ( kkSocket
           .getInputStream ())) ;
     catch  ( UnknownHostException e ) {
       System.err.println ( "Don't know about host: taranis." ) ;
       System.exit ( 1 ) ;
     catch  ( IOException e ) {
       System.err
           .println ( "Couldn't get I/O for the connection to: taranis." ) ;
       System.exit ( 1 ) ;
     }

     BufferedReader stdIn =  new  BufferedReader ( new  InputStreamReader (
         System.in )) ;
     String fromServer;
     String fromUser;

     while  (( fromServer = in.readLine ())  !=  null ) {
       System.out.println ( "Server: "  + fromServer ) ;
       if  ( fromServer.equals ( "Bye." ))
         break ;

       fromUser = stdIn.readLine () ;
       if  ( fromUser !=  null ) {
         System.out.println ( "Client: "  + fromUser ) ;
         out.println ( fromUser ) ;
       }
     }

     out.close () ;
     in.close () ;
     stdIn.close () ;
     kkSocket.c
分享到:
评论

相关推荐

    Webservice Client and Server demo in PHP

    Webservice Client and Server demo in PHP

    DHCP client-server交互DEMO

    DHCP (Dynamic Host Configuration Protocol) is a LAN network protocol and we want to achieve to assign IP ... And DHCP server can control a range of IP addresses which can be assigned once client logs in.

    Instant Messaging Demo Client And XMPP Component For Delphi XE6 FireMonkey

    The developer build a working instant message demo client and a working XMPP protocol component with Firemonkey and I am making them available. It does use the OXML library for Delphi which is also ...

    基于.net core3.0 MQTT协议通信,并附Client和Server完整demo

    基于.net core3.0 MQTT协议通信,并nuGet下载MQTTnet 2.7.5.0,附件有源码说明,应用程序可直接运行

    TCP_ServerAndClient.rar

    2、包含Server和Client于一个Demo,可以实时相互测试 3、实现text文件实时记录收发数据 4、本案例教你如何使用C#BCL自带的异步接收函数BeginReceive()异步接收数据 5、含大量重要注释,适合新人阅读理解代码

    python-socket-udp-server-client.zip_For You I Will_Network_can p

    a project about python udp server/client demo, run them in different computers,you can better experience the enjoyment of network programming with python 1 this is a implementation of python udp ...

    KEPServerEX IoT Gateway REST and MQTT Client Agent Demo with Node-RED.docx

    KEPServerEX IoT Gateway

    SocketCommunication-Demo

    SocketCommunication-Demo, include server and client code.

    OPC Client Toolkit for Delphi

    Our dOPC Client Toolkit ...We encourage you to download our free trial version, which is fully functional and includes a comprehensive help file and over 30 demo and example programs (with source code).

    A C++ Websocket server for realtime interaction with Web clients

    A Websocket protocol implementation atop the ush Framework real time library plus a demo example featuring four types of communication workflows between the HTML5 web client and the server.

    Android AIDL Demo源码

    Android AIDL Demo源码.包含Client端和Server端,Client调用aidl服务进行加法运算

    FastReport.v4.15 for.Delphi.BCB.Full.Source企业版含ClientServer中文修正版支持D4-XE5

    FastReport.v4.15 for.Delphi.BCB.Full.Source企业版含ClientServer中文修正版支持Delphi 4-XE5 and C++Builder 6-XE5. D2010以上版本(D14_D19)安装必读 delphi2010以上版本(D14_D19)使用者安装时,请将res\frccD14_...

    game-demo:基于skynet的游戏小demo

    ./skynet examples/config # Launch first skynet node (Gate server) and a skynet-master (see config for standalone option) ./3rd/lua/lua examples/client.lua # Launch a client, and try to input hello. ...

    vb写的ole 回调函数

    'make keeping the client and the server working together a real chore. To get 'around this, go to the Tools.Options.Project dialog and set the "Compatible OLE 'Server" field to a previous instance of ...

    ICS delphixe10源码版

    .\Samples\delphi\BroswerDemo\Resources Resource file, web pages and movie linked into browser demo .\Samples\delphi\FtpDemos Delphi Win32/Win64 FTP sample applications (all Delphi versions) .\Samples\...

    RabbitMQ for Android

    This is a demo application which shows how RabbitMQ can be used for a group chat/messaging app. ... A python client is also available using which one can test if the server is working or not.

    SecureBridge.v5.0.2

    It protects any TCP traffic using SSH or SSL secure transport layer protocols, that provide authentication for both client and server, strong data encryption, and data integrity verification....

    unidac+3.0.010 各种数据库连接

    UniDAC provides transparent server-independent interfaces for working with different databases, and lets you change the client engine for specific server type just by changing single connection option...

    sgcWebSockets_source_4.1.0

    [+] : MQTT client, added Authentication property, allows to set user and password to authenticate against MQTT Server. [+] : MQTT client, added HeartBeat property, keeps alive connection. [+] : ...

    Delphi XMLRPC

    This package contains implementations of a XML-RPC server and a XML-RPC client. Target platforms are Windows, Linux and native DOS by use of DWPL and ...server and client implementations are included.

Global site tag (gtag.js) - Google Analytics