java 模拟多个客户端与服务器建立UDP连接
来源:互联网 发布:帝国cms整站模板 编辑:程序博客网 时间:2024/05/16 16:01
Client.java
import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetSocketAddress;public class Client implements Runnable {private String ip;private int port;private String message;public Client() {}public Client(String ip, int port, String message) {super();this.ip = ip;this.port = port;this.message = message;}public void run() {try {DatagramSocket client = new DatagramSocket();byte[] messageBytes = Util.hexStringToBytes(message);InetSocketAddress socketAddress = new InetSocketAddress(ip, port);DatagramPacket sendData = new DatagramPacket(messageBytes,messageBytes.length);DatagramPacket receiveData = new DatagramPacket(new byte[25], 25);sendData.setSocketAddress(socketAddress);System.out.println("send:" + message);client.send(sendData);client.receive(receiveData);byte[] receiveMessage = receiveData.getData();System.out.println("received:"+ Util.bytesToHexString(receiveMessage));client.close();} catch (Exception e) {e.printStackTrace();}}}
Util.java
public class Util {/** * Convert byte[] to hex string.这里我们可以将byte转换成int, * 然后利用Integer.toHexString(int)来转换成16进制字符串。 * * @param src * byte[] data * @return hex string */public static String bytesToHexString(byte[] src) {StringBuilder stringBuilder = new StringBuilder("");if (src == null || src.length <= 0) {return null;}for (int i = 0; i < src.length; i++) {int v = src[i] & 0xFF;String hv = Integer.toHexString(v);if (hv.length() < 2) {stringBuilder.append(0);}stringBuilder.append(hv);}return stringBuilder.toString().toUpperCase();}/** * Convert byte to hex string * * @param src * @return */public static String byteToHexString(byte src) {StringBuilder stringBuilder = new StringBuilder("");int v = src & 0xFF;String hv = Integer.toHexString(v);if (hv.length() < 2) {stringBuilder.append(0);}stringBuilder.append(hv);return stringBuilder.toString().toUpperCase();}/** * Convert hex string to byte[] * * @param hexString * the hex string * @return byte[] */public static byte[] hexStringToBytes(String hexString) {if (hexString == null || hexString.equals("")) {return null;}hexString = hexString.toUpperCase();int length = hexString.length() / 2;char[] hexChars = hexString.toCharArray();byte[] d = new byte[length];for (int i = 0; i < length; i++) {int pos = i * 2;d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));}return d;}/** * Convert char to byte * * @param c * char * @return byte */private static byte charToByte(char c) {return (byte) "0123456789ABCDEF".indexOf(c);}/** * 获取校验码 * * @param hexStr * @return */public static String getChecksum(String hexStr) {byte[] message = hexStringToBytes(hexStr);byte temp = message[0];for (int i = 1; i < message.length; i++) {temp = (byte) (temp ^ message[i]);}return byteToHexString(temp);}}
3.Main.java
public class Main {public static void main(String[] args) throws InterruptedException {String ip = "127.0.0.1";int port = 9999;String messageFlag = "7E";for (int i = 100; i < 999; i++) {String messageBody = "F55509000018710438" + i;String checksum = Util.getChecksum(messageBody);String message = messageFlag + messageBody + checksum + messageFlag;new Thread(new Client(ip, port, message)).start();}}}
0 0
- java 模拟多个客户端与服务器建立UDP连接
- udp服务器与客户端
- UDP服务器与客户端
- java 网络编程 多个客户端连接服务器
- 模拟多个客户端IP发送udp包
- UDP通讯:服务器与客户端
- TCP服务器接收多个客户端连接
- TCP的多个客户端连接服务器
- Java实现单个客户端与服务器UDP通信
- java服务器与linux c客户端之间udp通信
- Java多线程UDP客户端与服务器间使用Socket通信
- java Socket 一个服务器与多个客户端进行通信
- Java Socket多个客户端与服务器通信
- java--实现多个客户端与服务端连接
- Java简单的客户端与服务器的建立与通信
- Java简单的客户端与服务器的建立与通信
- Java简单的客户端与服务器的建立与通信
- qt UDP 本机多个客户端连接服务器
- Java生成双击可执行的jar包
- 【Linux】VirtualBox RedHat9.0 安装注意事项
- HDU 5444.Elven Postman【2015 ACM/ICPC Asia Regional Changchun Online】【二叉树建立与遍历】9月14
- Machine Learning 网络资源
- BZOJ 1121 [POI2008]激光发射器SZK 数学
- java 模拟多个客户端与服务器建立UDP连接
- iOS问题:[UIButton setCurrentPage:]: unrecognized selector sent to instance
- HDU 5000 Clone (多重背包)
- ural 1013
- UIday1502:XML 、JSON 数据结构解析
- Java基础知识记录
- cmd命令大全
- java io流的一部分解析
- Java习题4—IO流与异常