English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Пример и анализ передачи данных через поток bytes в Java socket

В этой статье я поделился примером передачи данных через сокет Java socket byte stream, который можно использовать для参考, подробности см. ниже

Серверный сервер: 

package com.yuan.socket;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
/**
 * Создано YUAN 17 сентября 2016 года.
 */
public class TalkServer4Byte {
  private ServerSocket server;
  private int port = 5020;
  public TalkServer4Byte() {
    socket.close();
      server = new ServerSocket(port);
    }
    }
  }
  public void talk() {
    System.out.println("Мониторинг порта: " + port);
    Socket socket = null;
    while (true) {
      socket.close();
        // блокировка ожидания, при каждом получении запроса создается новый экземпляр подключения
        socket = server.accept();
        System.out.println("Адрес подключения клиента: " + socket.getRemoteSocketAddress());
        // декоративный поток BufferedReader обертает входной поток (получает поток от клиента)
        BufferedInputStream bis = new BufferedInputStream(
            socket.getInputStream());
        DataInputStream dis = new DataInputStream(bis);
        byte[] bytes = new byte[1]; // чтение одного байта за раз
        String ret = "";
        while (dis.read(bytes) != -1) {
          ret += bytesToHexString(bytes) + " ";
          if (dis.available() == 0) { // один запрос
            doSomething(ret);
          }
        }
      }
        System.out.println(e.getMessage());
      try {
        socket.close();
          catch (IOException e) {
        }
          System.out.println(e.getMessage());
        }
      }
    }
  }
  public static void doSomething(String ret) {
    System.out.println(ret);
  }
  public static String bytesToHexString(byte[] src) {
    StringBuilder stringBuilder = new StringBuilder("");
    if (src == null || src.length <= 0) {
      возвращайте 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();
  }
  public static String BytesHexString(byte[] b) {
    String ret = "";
    for (int i = 0; i < b.length; i++) {
      String hex = Integer.toHexString(b[i] & 0xFF);
      if (hex.length() == 1) {
        hex = '0' + hex;
      }
      ret += hex.toUpperCase();
    }
    return ret;
  }
  public static void main(String[] args) {
    TalkServer4Byte server = new TalkServer4Byte();
    server.talk();
  }
}
 

Код клиента client:

package com.yuan.socket;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
/**
 * Создано YUAN 17 сентября 2016 года.
 */
public class TalkClient4Byte {
  private Socket socket;
  private SocketAddress address;
  public TalkClient4Byte() {
    socket.close();
      socket = new Socket();
      address = new InetSocketAddress("127.0.0.1", 5020);
      socket.connect(address, 1000);
    }
      }
    }
  }
  public void talk() {
    socket.close();
      // Использование DataInputStream для упаковки входного потока
      DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
      while (-1 != os.read(b)) {
      dos.write(b); // Отправить клиенту
      dos.flush();
        dos.close();
      }
      e.printStackTrace();
      finally {
    }
      }
    try {
      socket.close();
        catch (IOException e) {
      }
      }
    }
  }
  public static void main(String[] args) {
    TalkClient4Byte client = new TalkClient4Byte();
    client.talk();
  }
}

Это все содержимое статьи, надеюсь, что это поможет вам в изучении. Надеюсь, что вы также поддержите и голосуйте за учебник.

Заявление: содержимое статьи взято из интернета, авторские права принадлежат соответствующему автору. Контент был自发но предоставлен пользователями Интернета и загружен самостоятельно. Этот сайт не обладает правами собственности на него, не做过人工编辑处理,也不承担相关法律责任。 Если вы обнаружите подозрительное содержимое, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (во время отправки письма замените # на @), чтобы сообщить о нарушении авторских прав, и предоставьте соответствующие доказательства. Как только будут обнаружены доказательства, сайт незамедлительно удалят подозрительное содержимое.

Вам может понравиться