国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java Socket編程實例(二)- UDP基本使用

2019-11-26 14:11:40
字體:
來源:轉載
供稿:網友

一.服務端代碼:

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 中文參考手冊》,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 上饶市| 中江县| 尖扎县| 登封市| 彰化市| 禹城市| 平山县| 江西省| 汉源县| 彝良县| 丰原市| 阿拉善右旗| 武清区| 化隆| 屏东县| 渝中区| 桑植县| 梁平县| 岳阳市| 静安区| 姚安县| 临海市| 名山县| 鹤庆县| 兰州市| 高平市| 绥中县| 汝阳县| 康平县| 安国市| 米脂县| 江川县| 榆中县| 兴国县| 柳河县| 梓潼县| 宝鸡市| 前郭尔| 澳门| 郎溪县| 澄城县|