📄 datagramadditionserver.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 + -