手机
当前位置:查字典教程网 >编程开发 >Java >Java Socket编程实例(二)- UDP基本使用
Java Socket编程实例(二)- UDP基本使用
摘要:一.服务端代码:importjava.io.*;importjava.net.*;publicclassUDPEchoServer{priv...

一.服务端代码:

import java.io.*; import java.net.*; public class UDPEchoServer { private static final int ECHOMAX = 255; // Maximum size of echo datagram public static void main(String[] args) throws IOException { int servPort = 5500; // Server port DatagramSocket socket = new DatagramSocket(servPort); DatagramPacket packet = new DatagramPacket(new byte[ECHOMAX], ECHOMAX); while (true) { // Run forever, receiving and echoing datagrams socket.receive(packet); // Receive packet from client System.out.println("Handling client at " + packet.getAddress().getHostAddress() + " on port " + packet.getPort()); socket.send(packet); // Send the same packet back to client packet.setLength(ECHOMAX); // Reset length to avoid shrinking buffer } /* NOT REACHED */ } }

二.客户端代码:

import java.net.*; import java.io.*; public class UDPEchoClientTimeout { private static final int TIMEOUT = 3000; // Resend timeout (milliseconds) private static final int MAXTRIES = 5; // Maximum retransmissions public static void main(String[] args) throws IOException { InetAddress serverAddress = InetAddress.getByName("127.0.0.1"); // Server address int servPort = 5500; // Server port // Convert the argument String to bytes using the default encoding byte[] bytesToSend = "Hi, World".getBytes(); DatagramSocket socket = new DatagramSocket(); socket.setSoTimeout(TIMEOUT); // Maximum receive blocking time(milliseconds) // Sending packet DatagramPacket sendPacket = new DatagramPacket(bytesToSend, bytesToSend.length, serverAddress, servPort); DatagramPacket receivePacket = // Receiving packet new DatagramPacket(new byte[bytesToSend.length], bytesToSend.length); int tries = 0; // Packets may be lost, so we have to keep trying boolean receivedResponse = false; do { socket.send(sendPacket); // Send the echo string try { socket.receive(receivePacket); // Attempt echo reply reception if (!receivePacket.getAddress().equals(serverAddress)) {// Check // source throw new IOException("Received packet from an unknown source"); } receivedResponse = true; } catch (InterruptedIOException e) { // We did not get anything tries += 1; System.out.println("Timed out, " + (MAXTRIES - tries) + " more tries..."); } } while ((!receivedResponse) && (tries < MAXTRIES)); if (receivedResponse) { System.out.println("Received: " + new String(receivePacket.getData())); } else { System.out.println("No response -- giving up."); } socket.close(); } }

上述代码的UDP服务端是单线程,一次只能服务一个客户端。

以上就是本文的全部内容,查看更多Java的语法,大家可以关注:《Thinking in Java 中文手册》、《JDK 1.7 参考手册官方英文版》、《JDK 1.6 API java 中文参考手册》、《JDK 1.5 API java 中文参考手册》,也希望大家多多支持查字典教程网。

【Java Socket编程实例(二)- UDP基本使用】相关文章:

Java冒泡排序(Bubble Sort)实例讲解

Java字符判断的小例子

Java instanceof 运算符的使用方法

Java中 shuffle 算法的使用

实现了基于TCP的Java Socket编程实例代码

java dom4j解析xml文件代码实例分享

java教程之java注解annotation使用方法

java线程并发blockingqueue类使用示例

java中File类的使用方法

java线程并发countdownlatch类使用示例

精品推荐
分类导航