Демонстрация только что закончила, я подошел прямо к теме. Я открыл два потока для моделирования связи между сервером сокета и клиентом и инкапсулировал данные в указанное сообщение формата, чтобы отправить
Код:
Импорт java.io.ioexception; импорт java.io.inputstream; import java.io.outputstream; импорт java.net.inetadress; импорт java.net.serversocket; импорт java.net.socket; import java.net.unknownhostexception;/*** Создан Sikang на 2016/4/29. */public class CustomData { public static void main(String args[]) { //Server thread new Thread(new Runnable() { @Override public void run() { try { //Open the server Socket ServerSocket server = new ServerSocket(9000); //Waiting for the client to connect Socket socket = server.accept(); InputStream inputStream = socket.getInputStream(); //First get Первые два байта как длина сообщений = Bytestoint (CRC); GetCrc32 (Bytes)) {System.out.println ("CRC32 справа!"); Integer.parseint (bytetohex (байты [1]), 16); // Получить оставшиеся данные и взять данные Data DataLen = длина - 2 - 4 - 1 - 1; inputstream.close (); // Client Thread New Thread (new Runnable () {@Override public void run () {try {// подключить серверное сокет = new Socket (getipAddress (), 9000); outputStream outputStream = socket.getOutputStream (); string str = "hellow World!"; data, dength); } /***Инкапсулируйте и отправляйте сообщения*Формат сообщения - {общая длина сообщения [2 байта], CRC32 -код [4 байта], информация версии VER [1 байт], инструкция CMD [1 байт], Содержание данных данных [несколько байтов]}* /Private Static Void Pack (Outsteam Out, Byte CMD, BYTE [] DATA, int LEN LEN). Сообщение, как упомянуто выше, добавьте байты в формат короткого уровня. // Выходная длина сообщения out.write (shorttobyte (totalsize), 0, 2); // поле, которое необходимо проверить Byte [] bytes = новый байт [1 + 1 + len]; int index = 0; Bytes [index ++] = 0x05; // Номер версии (это написано здесь) Bytes [index ++] = cmd; // cmd инструкция // Содержание данных для (int i = 0; i <len; i ++) {bytes [index ++] = data [i]; } // Получить код проверки CRC32 для VER, CMD и DATA (алгоритм CRC32 внизу, найденный в Интернете ...) Byte [] CRC32 = inttobytes (getCrc32 (Bytes)); // вывод CRC Check Code Out.write (CRC32, 0, CRC32.Length); // Вывод Ver, cmd, data out.write (bytes, 0, bytes.length); } catch (ioException e) {e.printstackTrace (); }} / ** * Получить собственный ip * / private static string getipAddress () бросает неизвестное hostexception {inetAddress address = inetAddress.getlocalhost (); return address.gethostaddress (); } / ** * int to byte [] * / public static byte [] inttobytes (int value) {byte [] bytes = new Byte [4]; байты [3] = (байт) (значение >> 24); байты [2] = (байт) (значение >> 16); байты [1] = (байт) (значение >> 8); байты [0] = (байт) (значение >> 0); вернуть байты; } / ** * Короткий до байта [] * / public static byte [] shorttobyte (короткое значение) {byte [] bytes = new Byte [2]; байты [1] = (байт) (значение >> 8); байты [0] = (байт) (значение >> 0); вернуть байты; } / *** Byte to Hexadecimal* / public static String bytetohex (byte b) {int i = b & 0xff; return integer.tohexstring (i); } / ** * byte [] to int * / public static int bytestoint (byte [] bytes) {return (int) (((((байты [3] & 0xff) << 24) | ((байты [2] & 0xff) << 16) | ((bytes [1] & 0xff) << 8) | (bytes [0xff)) / **. 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0xedb8832, 0x79dcb8a4, 0xe0d5e9832, 0x79dcb8a4, 0xe0d5e91e9832, 0x79dcb8a4, 0xe0d5e98332, 0x79dcb8a4, 0xe0d5e91e9832, 0x79dcb8a4, 0x.9832, 0x79dcb8a4, 0x0832, 0x79dcb8a4, 0x0832, 0x79dcb8a4, 0x0832, 0x79dcb8a4, 0x0832, 0x79dcb8a4, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6dddde4b41de, 0x1adad47d, 0x6dddde4b41de, 0x1adad47d, 0x6dddde4b41de41de, 0x1adad47d, 0x6dddde4b41de, 0x1adad47d, 0x6ddde4b41de, 0x1adad47d, 0x6ddde4b41de, 0x1adad47d, 0x6ddde4b41d. 0x83d385c7, 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 0x3b6e20e20e20. 0xd56041e4, 0xa26777172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 0xdbbc9d6, 0xbcbcf940, 0x6, 0x32, 0xdbbc9d6, 0xbcf940, 0x32, 0xdbbc9d6, 0x42b2986c. 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba999, 0x59, 0x59, 0x59, 0x599, 0x599, 0x50f8, 0x56b3c423, 0xcfba99, 0x599, 0x50f8, 0x56b3c423, 0xcfba999, 0x56b3c423, 0xcfba9 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db710662d3d, 0x76dc4190, 0x01db710662d3d, 0x76dc4190, 0x01db710662d3d3d3d3d3d3d 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbbbbbbbbbbbbbbbbbbbbbbbbbbbb. 0x91646C97, 0xE6635C01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b65b6, 0x8208F4C1, 0xf50fc457, 0x65b6b6, 0x8208f4c1, 0xfc457, 0x65b6, 0x8208f4c1, 0x157, 0x8208f4c1, 0x1b01a57b, 0x8208f4c1, 0x1b01A57 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, 0x3ab551c 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xAd678846, 0xda60b8d0, 0x44042d73, 0x33031de50b8d0, 0x44042d73, 0x33031de5, 0x4042d73, 0x33031de5, 0x4042d73, 0x33031de5, 0x4042d73, 0x31031da60b8d0, 0x44042d73, 0xda60b8d0. 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29abfb3b6, 0x03b6e20c, 0x74b1d29abf3b6, 0x03b6e20c, 0x74320, 0xabfb3b6, 0x03b6e20c, 0x74320, 0xabfb3b6, 0x03b6e20c, 0x74320, 0xabfb3b6, 0x03b6e20c, 0xedb88320, 0xabfb3b6, 0x03b6e20c. 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae2, 0xe40ecf0b, 0x9309ff9d, 0x0aal2, 0xe40ecf0b, 0x9309ff9d, 0x00ae2, 0xe40ecf0b, 0x9309ff9d, 0x00ae2, 0xe40ecf0b0. 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be06a7, 0xfed41b76, 0x89d32be07a7, 0xfed41b76, 0x891, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7. 0x67dd4acc, 0xf9b9df6f, 0x8ebeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f17b2c4, 0x4fdff252, 0xd1bb67f17b2c4, 0x4fdff252, 0xd1b67f17f17b2c4, 0x4fdff252, 0xd1b67f17b2c4, 0x4fdff252, 0xd1b67f17b2c4, 0x4fdff252, 0xd1b67f17c2c4, 0x4fdff252, 0xd1b67f17c2c4, 0x4fdff252, 0xd1b67f17 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2b45a92, 0x566.bbe3bbe, 0xb2bd0b28, 0x2b45a92, 0xb2b28, 0x2bb45ba3bbe3bbe, 0xb2bd0b28, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x767f, 0x7207f, 0x767f, 0x906a9, 0xeb0e363f, 0x7207F07 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d4, 0x24e. 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x110110B5CF6A70, 0x66063bca, 0x110b5c. 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0x7672661, 0xd06016f7, 0x49674de 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, 0xcabac28a, 0x53333333333333333333333333333333333333333333333333333333333. 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x377, 0x2a6f2b94, 0x5a05df1b, 0x2d02ef8d,};Результаты работы:
Приведенный выше пример добавления проверки CRC32 в инкапсуляции пакетов протокола Java - это все контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.