<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FNetwork_Protocol%2FUDP</id>
		<title>Java/Network Protocol/UDP - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FNetwork_Protocol%2FUDP"/>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java/Network_Protocol/UDP&amp;action=history"/>
		<updated>2026-04-07T15:10:20Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://jexp.ru/index.php?title=Java/Network_Protocol/UDP&amp;diff=8869&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java/Network_Protocol/UDP&amp;diff=8869&amp;oldid=prev"/>
				<updated>2010-06-01T07:20:04Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 07:20, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://jexp.ru/index.php?title=Java/Network_Protocol/UDP&amp;diff=8868&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java/Network_Protocol/UDP&amp;diff=8868&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:47Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== An echo server using UDP sockets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.net.DatagramPacket;&lt;br /&gt;
import java.net.DatagramSocket;&lt;br /&gt;
import java.net.SocketException;&lt;br /&gt;
public class UdpEchoServer {&lt;br /&gt;
  static final int BUFFERSIZE = 256;&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    DatagramSocket sock;&lt;br /&gt;
    DatagramPacket pack = new DatagramPacket(new byte[BUFFERSIZE],&lt;br /&gt;
        BUFFERSIZE);&lt;br /&gt;
    try {&lt;br /&gt;
      sock = new DatagramSocket(7);&lt;br /&gt;
    } catch (SocketException e) {&lt;br /&gt;
      System.out.println(e);&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    // echo back everything&lt;br /&gt;
    while (true) {&lt;br /&gt;
      try {&lt;br /&gt;
        sock.receive(pack);&lt;br /&gt;
        sock.send(pack);&lt;br /&gt;
      } catch (IOException ioe) {&lt;br /&gt;
        System.out.println(ioe);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Connect to a daytime server using the UDP protocol ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) 2004 David Flanagan.  All rights reserved.&lt;br /&gt;
 * This code is from the book Java Examples in a Nutshell, 3nd Edition.&lt;br /&gt;
 * It is provided AS-IS, WITHOUT ANY WARRANTY either expressed or implied.&lt;br /&gt;
 * You may study, use, and modify it for any non-commercial purpose,&lt;br /&gt;
 * including teaching and use in open-source projects.&lt;br /&gt;
 * You may distribute it non-commercially as long as you retain this notice.&lt;br /&gt;
 * For a commercial use license, or to purchase the book, &lt;br /&gt;
 * please visit http://www.davidflanagan.ru/javaexamples3.&lt;br /&gt;
 */&lt;br /&gt;
//package je3.nio;&lt;br /&gt;
import java.net.DatagramPacket;&lt;br /&gt;
import java.net.DatagramSocket;&lt;br /&gt;
import java.net.InetSocketAddress;&lt;br /&gt;
import java.net.SocketTimeoutException;&lt;br /&gt;
/**&lt;br /&gt;
 * Connect to a daytime server using the UDP protocol. We use java.net instead&lt;br /&gt;
 * of java.nio because DatagramChannel doesn&amp;quot;t honor the setSoTimeout() method&lt;br /&gt;
 * on the underlying DatagramSocket&lt;br /&gt;
 */&lt;br /&gt;
public class DaytimeClient {&lt;br /&gt;
  public static void main(String args[]) throws java.io.IOException {&lt;br /&gt;
    // Figure out the host and port we&amp;quot;re going to talk to&lt;br /&gt;
    String host = args[0];&lt;br /&gt;
    int port = 13;&lt;br /&gt;
    if (args.length &amp;gt; 1)&lt;br /&gt;
      port = Integer.parseInt(args[1]);&lt;br /&gt;
    // Create a socket to use&lt;br /&gt;
    DatagramSocket socket = new DatagramSocket();&lt;br /&gt;
    // Specify a 1-second timeout so that receive() does not block forever.&lt;br /&gt;
    socket.setSoTimeout(1000);&lt;br /&gt;
    // This buffer will hold the response. On overflow, extra bytes are&lt;br /&gt;
    // discarded: there is no possibility of a buffer overflow attack here.&lt;br /&gt;
    byte[] buffer = new byte[512];&lt;br /&gt;
    DatagramPacket packet = new DatagramPacket(buffer, buffer.length, new InetSocketAddress(host,&lt;br /&gt;
        port));&lt;br /&gt;
    // Try three times before giving up&lt;br /&gt;
    for (int i = 0; i &amp;lt; 3; i++) {&lt;br /&gt;
      try {&lt;br /&gt;
        // Send an empty datagram to the specified host (and port)&lt;br /&gt;
        packet.setLength(0); // make the packet empty&lt;br /&gt;
        socket.send(packet); // send it out&lt;br /&gt;
        // Wait for a response (or timeout after 1 second)&lt;br /&gt;
        packet.setLength(buffer.length); // make room for the response&lt;br /&gt;
        socket.receive(packet); // wait for the response&lt;br /&gt;
        // Decode and print the response&lt;br /&gt;
        System.out.print(new String(buffer, 0, packet.getLength(), &amp;quot;US-ASCII&amp;quot;));&lt;br /&gt;
        // We were successful so break out of the retry loop&lt;br /&gt;
        break;&lt;br /&gt;
      } catch (SocketTimeoutException e) {&lt;br /&gt;
        // If the receive call timed out, print error and retry&lt;br /&gt;
        System.out.println(&amp;quot;No response&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    // We&amp;quot;re done with the channel now&lt;br /&gt;
    socket.close();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DatagramSocket Client ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
import java.net.DatagramPacket;&lt;br /&gt;
import java.net.DatagramSocket;&lt;br /&gt;
class WriteServer {&lt;br /&gt;
  public static void main(String args[]) throws Exception {&lt;br /&gt;
    int clientPort = 999;&lt;br /&gt;
    int buffer_size = 1024;&lt;br /&gt;
    byte buffer[] = new byte[buffer_size];&lt;br /&gt;
    DatagramSocket ds = new DatagramSocket(clientPort);&lt;br /&gt;
    while (true) {&lt;br /&gt;
      DatagramPacket p = new DatagramPacket(buffer, buffer.length);&lt;br /&gt;
      ds.receive(p);&lt;br /&gt;
      System.out.println(new String(p.getData(), 0, p.getLength()));&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DatagramSocket Server ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
import java.net.DatagramPacket;&lt;br /&gt;
import java.net.DatagramSocket;&lt;br /&gt;
import java.net.InetAddress;&lt;br /&gt;
class WriteServer {&lt;br /&gt;
  public static void main(String args[]) throws Exception {&lt;br /&gt;
    int serverPort = 998;&lt;br /&gt;
    int buffer_size = 1024;&lt;br /&gt;
    byte buffer[] = new byte[buffer_size];&lt;br /&gt;
    DatagramSocket ds = new DatagramSocket(serverPort);&lt;br /&gt;
      int pos = 0;&lt;br /&gt;
      while (true) {&lt;br /&gt;
        int c = System.in.read();&lt;br /&gt;
        switch (c) {&lt;br /&gt;
        case -1:&lt;br /&gt;
          System.out.println(&amp;quot;Server Quits.&amp;quot;);&lt;br /&gt;
          return;&lt;br /&gt;
        case &amp;quot;\r&amp;quot;:&lt;br /&gt;
          break;&lt;br /&gt;
        case &amp;quot;\n&amp;quot;:&lt;br /&gt;
          ds.send(new DatagramPacket(buffer, pos, InetAddress.getLocalHost(), 999));&lt;br /&gt;
          pos = 0;&lt;br /&gt;
          break;&lt;br /&gt;
        default:&lt;br /&gt;
          buffer[pos++] = (byte) c;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Experiment with UDP sockets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.net.DatagramPacket;&lt;br /&gt;
import java.net.DatagramSocket;&lt;br /&gt;
import java.net.InetAddress;&lt;br /&gt;
public class UDP0 {&lt;br /&gt;
  // command line arguments:&lt;br /&gt;
  // r -- read an incoming packet&lt;br /&gt;
  // w hostname word -- write word to hostname&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    byte[] ary = new byte[128];&lt;br /&gt;
    DatagramPacket pack = new DatagramPacket(ary, 128);&lt;br /&gt;
    if (args[0].charAt(0) == &amp;quot;r&amp;quot;) {&lt;br /&gt;
      // read&lt;br /&gt;
      DatagramSocket sock = new DatagramSocket(1111);&lt;br /&gt;
      sock.receive(pack);&lt;br /&gt;
      String word = new String(pack.getData());&lt;br /&gt;
      System.out.println(&amp;quot;From: &amp;quot; + pack.getAddress() + &amp;quot; Port: &amp;quot;&lt;br /&gt;
          + pack.getPort());&lt;br /&gt;
      System.out.println(word);&lt;br /&gt;
      sock.close();&lt;br /&gt;
    } else { // write&lt;br /&gt;
      DatagramSocket sock = new DatagramSocket();&lt;br /&gt;
      pack.setAddress(InetAddress.getByName(args[1]));&lt;br /&gt;
      pack.setData(args[2].getBytes());&lt;br /&gt;
      pack.setPort(1111);&lt;br /&gt;
      sock.send(pack);&lt;br /&gt;
      sock.close();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Handles TCP and UDP connections and provides exception handling and error logging ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) 2004 David Flanagan.  All rights reserved.&lt;br /&gt;
 * This code is from the book Java Examples in a Nutshell, 3nd Edition.&lt;br /&gt;
 * It is provided AS-IS, WITHOUT ANY WARRANTY either expressed or implied.&lt;br /&gt;
 * You may study, use, and modify it for any non-commercial purpose,&lt;br /&gt;
 * including teaching and use in open-source projects.&lt;br /&gt;
 * You may distribute it non-commercially as long as you retain this notice.&lt;br /&gt;
 * For a commercial use license, or to purchase the book, &lt;br /&gt;
 * please visit http://www.davidflanagan.ru/javaexamples3.&lt;br /&gt;
 */&lt;br /&gt;
//package je3.nio;&lt;br /&gt;
import java.net.InetSocketAddress;&lt;br /&gt;
import java.net.SocketAddress;&lt;br /&gt;
import java.nio.ByteBuffer;&lt;br /&gt;
import java.nio.CharBuffer;&lt;br /&gt;
import java.nio.channels.Channel;&lt;br /&gt;
import java.nio.channels.DatagramChannel;&lt;br /&gt;
import java.nio.channels.SelectionKey;&lt;br /&gt;
import java.nio.channels.Selector;&lt;br /&gt;
import java.nio.channels.ServerSocketChannel;&lt;br /&gt;
import java.nio.channels.SocketChannel;&lt;br /&gt;
import java.nio.charset.Charset;&lt;br /&gt;
import java.nio.charset.CharsetEncoder;&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
import java.util.Set;&lt;br /&gt;
import java.util.logging.Level;&lt;br /&gt;
import java.util.logging.Logger;&lt;br /&gt;
/**&lt;br /&gt;
 * A more robust daytime service, that handles TCP and UDP connections and&lt;br /&gt;
 * provides exception handling and error logging.&lt;br /&gt;
 */&lt;br /&gt;
public class DaytimeServer {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    try { // Handle startup exceptions at the end of this block&lt;br /&gt;
      // Get an encoder for converting strings to bytes&lt;br /&gt;
      CharsetEncoder encoder = Charset.forName(&amp;quot;US-ASCII&amp;quot;).newEncoder();&lt;br /&gt;
      // Allow an alternative port for testing with non-root accounts&lt;br /&gt;
      int port = 13; // RFC867 specifies this port.&lt;br /&gt;
      if (args.length &amp;gt; 0)&lt;br /&gt;
        port = Integer.parseInt(args[0]);&lt;br /&gt;
      // The port we&amp;quot;ll listen on&lt;br /&gt;
      SocketAddress localport = new InetSocketAddress(port);&lt;br /&gt;
      // Create and bind a tcp channel to listen for connections on.&lt;br /&gt;
      ServerSocketChannel tcpserver = ServerSocketChannel.open();&lt;br /&gt;
      tcpserver.socket().bind(localport);&lt;br /&gt;
      // Also create and bind a DatagramChannel to listen on.&lt;br /&gt;
      DatagramChannel udpserver = DatagramChannel.open();&lt;br /&gt;
      udpserver.socket().bind(localport);&lt;br /&gt;
      // Specify non-blocking mode for both channels, since our&lt;br /&gt;
      // Selector object will be doing the blocking for us.&lt;br /&gt;
      tcpserver.configureBlocking(false);&lt;br /&gt;
      udpserver.configureBlocking(false);&lt;br /&gt;
      // The Selector object is what allows us to block while waiting&lt;br /&gt;
      // for activity on either of the two channels.&lt;br /&gt;
      Selector selector = Selector.open();&lt;br /&gt;
      // Register the channels with the selector, and specify what&lt;br /&gt;
      // conditions (a connection ready to accept, a datagram ready&lt;br /&gt;
      // to read) we&amp;quot;d like the Selector to wake up for.&lt;br /&gt;
      // These methods return SelectionKey objects, which we don&amp;quot;t&lt;br /&gt;
      // need to retain in this example.&lt;br /&gt;
      tcpserver.register(selector, SelectionKey.OP_ACCEPT);&lt;br /&gt;
      udpserver.register(selector, SelectionKey.OP_READ);&lt;br /&gt;
      // This is an empty byte buffer to receive emtpy datagrams with.&lt;br /&gt;
      // If a datagram overflows the receive buffer size, the extra bytes&lt;br /&gt;
      // are automatically discarded, so we don&amp;quot;t have to worry about&lt;br /&gt;
      // buffer overflow attacks here.&lt;br /&gt;
      ByteBuffer receiveBuffer = ByteBuffer.allocate(0);&lt;br /&gt;
      // Now loop forever, processing client connections&lt;br /&gt;
      for (;;) {&lt;br /&gt;
        try { // Handle per-connection problems below&lt;br /&gt;
          // Wait for a client to connect&lt;br /&gt;
          selector.select();&lt;br /&gt;
          // If we get here, a client has probably connected, so&lt;br /&gt;
          // put our response into a ByteBuffer.&lt;br /&gt;
          String date = new java.util.Date().toString() + &amp;quot;\r\n&amp;quot;;&lt;br /&gt;
          ByteBuffer response = encoder.encode(CharBuffer.wrap(date));&lt;br /&gt;
          // Get the SelectionKey objects for the channels that have&lt;br /&gt;
          // activity on them. These are the keys returned by the&lt;br /&gt;
          // register() methods above. They are returned in a&lt;br /&gt;
          // java.util.Set.&lt;br /&gt;
          Set keys = selector.selectedKeys();&lt;br /&gt;
          // Iterate through the Set of keys.&lt;br /&gt;
          for (Iterator i = keys.iterator(); i.hasNext();) {&lt;br /&gt;
            // Get a key from the set, and remove it from the set&lt;br /&gt;
            SelectionKey key = (SelectionKey) i.next();&lt;br /&gt;
            i.remove();&lt;br /&gt;
            // Get the channel associated with the key&lt;br /&gt;
            Channel c = (Channel) key.channel();&lt;br /&gt;
            // Now test the key and the channel to find out&lt;br /&gt;
            // whether something happend on the TCP or UDP channel&lt;br /&gt;
            if (key.isAcceptable() &amp;amp;&amp;amp; c == tcpserver) {&lt;br /&gt;
              // A client has attempted to connect via TCP.&lt;br /&gt;
              // Accept the connection now.&lt;br /&gt;
              SocketChannel client = tcpserver.accept();&lt;br /&gt;
              // If we accepted the connection successfully,&lt;br /&gt;
              // the send our respone back to the client.&lt;br /&gt;
              if (client != null) {&lt;br /&gt;
                client.write(response); // send respone&lt;br /&gt;
                client.close(); // close connection&lt;br /&gt;
              }&lt;br /&gt;
            } else if (key.isReadable() &amp;amp;&amp;amp; c == udpserver) {&lt;br /&gt;
              // A UDP datagram is waiting. Receive it now,&lt;br /&gt;
              // noting the address it was sent from.&lt;br /&gt;
              SocketAddress clientAddress = udpserver.receive(receiveBuffer);&lt;br /&gt;
              // If we got the datagram successfully, send&lt;br /&gt;
              // the date and time in a response packet.&lt;br /&gt;
              if (clientAddress != null)&lt;br /&gt;
                udpserver.send(response, clientAddress);&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        } catch (java.io.IOException e) {&lt;br /&gt;
          // This is a (hopefully transient) problem with a single&lt;br /&gt;
          // connection: we log the error, but continue running.&lt;br /&gt;
          // We use our classname for the logger so that a sysadmin&lt;br /&gt;
          // can configure logging for this server independently&lt;br /&gt;
          // of other programs.&lt;br /&gt;
          Logger l = Logger.getLogger(DaytimeServer.class.getName());&lt;br /&gt;
          l.log(Level.WARNING, &amp;quot;IOException in DaytimeServer&amp;quot;, e);&lt;br /&gt;
        } catch (Throwable t) {&lt;br /&gt;
          // If anything else goes wrong (out of memory, for example)&lt;br /&gt;
          // then log the problem and exit.&lt;br /&gt;
          Logger l = Logger.getLogger(DaytimeServer.class.getName());&lt;br /&gt;
          l.log(Level.SEVERE, &amp;quot;FATAL error in DaytimeServer&amp;quot;, t);&lt;br /&gt;
          System.exit(1);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      // This is a startup error: there is no need to log it;&lt;br /&gt;
      // just print a message and exit&lt;br /&gt;
      System.err.println(e);&lt;br /&gt;
      System.exit(1);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Receive UDP pockets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.net.DatagramPacket;&lt;br /&gt;
import java.net.DatagramSocket;&lt;br /&gt;
public class UDPReceive {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    try {&lt;br /&gt;
      int port = 90;&lt;br /&gt;
      // Create a socket to listen on the port.&lt;br /&gt;
      DatagramSocket dsocket = new DatagramSocket(port);&lt;br /&gt;
      // Create a buffer to read datagrams into. If a&lt;br /&gt;
      // packet is larger than this buffer, the&lt;br /&gt;
      // excess will simply be discarded!&lt;br /&gt;
      byte[] buffer = new byte[2048];&lt;br /&gt;
      // Create a packet to receive data into the buffer&lt;br /&gt;
      DatagramPacket packet = new DatagramPacket(buffer, buffer.length);&lt;br /&gt;
      // Now loop forever, waiting to receive packets and printing them.&lt;br /&gt;
      while (true) {&lt;br /&gt;
        // Wait to receive a datagram&lt;br /&gt;
        dsocket.receive(packet);&lt;br /&gt;
        // Convert the contents to a string, and display them&lt;br /&gt;
        String msg = new String(buffer, 0, packet.getLength());&lt;br /&gt;
        System.out.println(packet.getAddress().getHostName() + &amp;quot;: &amp;quot;&lt;br /&gt;
            + msg);&lt;br /&gt;
        // Reset the length of the packet before reusing it.&lt;br /&gt;
        packet.setLength(buffer.length);&lt;br /&gt;
      }&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      System.err.println(e);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Send out UDP pockets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.io.*;&lt;br /&gt;
import java.net.*;&lt;br /&gt;
public class UDPSend {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    try {&lt;br /&gt;
      String host = &amp;quot;www.jexp.ru&amp;quot;;&lt;br /&gt;
      int port = 90;&lt;br /&gt;
      byte[] message = &amp;quot;Java Source and Support&amp;quot;.getBytes();&lt;br /&gt;
      // Get the internet address of the specified host&lt;br /&gt;
      InetAddress address = InetAddress.getByName(host);&lt;br /&gt;
      // Initialize a datagram packet with data and address&lt;br /&gt;
      DatagramPacket packet = new DatagramPacket(message, message.length,&lt;br /&gt;
          address, port);&lt;br /&gt;
      // Create a datagram socket, send the packet through it, close it.&lt;br /&gt;
      DatagramSocket dsocket = new DatagramSocket();&lt;br /&gt;
      dsocket.send(packet);&lt;br /&gt;
      dsocket.close();&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      System.err.println(e);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Udp Echo Server ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.net.DatagramPacket;&lt;br /&gt;
import java.net.DatagramSocket;&lt;br /&gt;
public class Main {&lt;br /&gt;
  static final int BUFFERSIZE = 256;&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    DatagramPacket pack = new DatagramPacket(new byte[BUFFERSIZE], BUFFERSIZE);&lt;br /&gt;
    DatagramSocket sock = new DatagramSocket(7);&lt;br /&gt;
    // echo back everything&lt;br /&gt;
    while (true) {&lt;br /&gt;
      sock.receive(pack);&lt;br /&gt;
      sock.send(pack);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using Datagrams to Get the Date ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.net.DatagramPacket;&lt;br /&gt;
import java.net.DatagramSocket;&lt;br /&gt;
import java.net.InetAddress;&lt;br /&gt;
public class GetDate {&lt;br /&gt;
  final static int PortDayTime = 13; // well-known daytime port&lt;br /&gt;
  public static void main(String args[]) throws Exception {&lt;br /&gt;
    byte msg[] = new byte[256];&lt;br /&gt;
    DatagramSocket dgSocket = new DatagramSocket();&lt;br /&gt;
    InetAddress destination = InetAddress.getByName(&amp;quot;web.mit.edu&amp;quot;);&lt;br /&gt;
    DatagramPacket datagram = new DatagramPacket(msg, msg.length,&lt;br /&gt;
        destination, PortDayTime);&lt;br /&gt;
    dgSocket.send(datagram);&lt;br /&gt;
    datagram = new DatagramPacket(msg, msg.length);&lt;br /&gt;
    dgSocket.receive(datagram);&lt;br /&gt;
    String received = new String(datagram.getData());&lt;br /&gt;
    System.out.println(&amp;quot;The time in Cambridge is now: &amp;quot; + received);&lt;br /&gt;
    dgSocket.close();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>