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

📄 datagramadditionserver.java

📁 程序练习中包括书中实例程序代码和练习中要用到的代码,是压缩文件
💻 JAVA
字号:
package examples.network;

import java.io.*;
import java.net.*;
import java.util.StringTokenizer;

/** An example server class that uses datagrams
  */
public class DatagramAdditionServer {

   private int port;
    
   // This is not a reserved port number
   static final int DEFAULT_PORT = 8189;

   /** Constructor
     * @param port The port where the server
     *    will listen for requests
     */
   DatagramAdditionServer( int port ) {
      this.port = port;
   }

   /** The method that does the work for the class */
   public void run() {
      try {
         DatagramSocket ss = new DatagramSocket( port );
         byte[] buffer = new byte[256];
         DatagramPacket inDgp
            = new DatagramPacket( buffer,
                                  buffer.length );
         String req, rsp;

         do {
            ss.receive( inDgp );
            InetAddress senderAddress = inDgp.getAddress();
            int senderPort = inDgp.getPort();
            req = new String( inDgp.getData(), 0,
                              inDgp.getLength() );

            if ( ! req.equals( "" ) ) {
               double result = 0;
               StringTokenizer st
                  = new StringTokenizer( req );
               try {
                  while( st.hasMoreTokens() ) {
                     Double d
                        = new Double( st.nextToken() );
                     result += d.doubleValue();
                  }
                  rsp = "The result is " + result;
               } catch( NumberFormatException nfe ) {
                  rsp = "Sorry, your list contains an "
                        + "invalid number";
               }
               DatagramPacket outDgp
                  = new DatagramPacket( rsp.getBytes(),
                                        rsp.length(),
                                        senderAddress,
                                        senderPort );
               ss.send( outDgp );
            }
         } while( ! req.equals( "" ) );
         ss.close();
      }
      catch( IOException iox ) {
         System.out.println( iox );
         iox.printStackTrace();
      }
   }

   /** The test method for the class
     * @param args[0] Optional port number in place of
     *        the default
     */
   public static void main( String[] args ) {
      int port = DEFAULT_PORT;
      if (args.length > 0 ) {
         port = Integer.parseInt( args[0] );
      }
      DatagramAdditionServer addServe
         = new DatagramAdditionServer( port );
      addServe.run();
   }
}

⌨️ 快捷键说明

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