为了账号安全,请及时绑定邮箱和手机立即绑定

使用 UDP 进行 Java 套接字编程

使用 UDP 进行 Java 套接字编程

白猪掌柜的 2021-11-17 10:42:30
我正在尝试使用服务器客户端发送一些数字和哈希。我正在使用 UDP 协议来做到这一点。我按照预期使用数字或散列创建了一个数据包,并使用套接字发送它。客户端接收它,因此,只打印接收到的值。但是当我在客户端收到数字和哈希时,我没有得到相同的结果。可能的问题是什么?我正在提供我的服务器和客户端代码以及我在这里得到的输出。服务器代码:import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.nio.charset.StandardCharsets;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import java.util.ArrayList;import javax.xml.bind.DatatypeConverter;public class main {    public static void main(String[] args) throws IOException, NoSuchAlgorithmException {        int n = 10;        SecureRandom rand = new SecureRandom();        ArrayList<String> clue = new ArrayList<String>();        ArrayList<String> cluenum = new ArrayList<String>();        MessageDigest digestnew = MessageDigest.getInstance("SHA-256");        byte[] finalmsgblock = "End".getBytes();        for(int i = 0; i < n; i++)        {            int num = rand.nextInt(100);            String num1 = Integer.toString(num);            byte[] num2 = digestnew.digest(num1.getBytes(StandardCharsets.UTF_8));            String num3 = "Clue: " + DatatypeConverter.printHexBinary(num2);            clue.add(i,num3);            cluenum.add(i, num1);        }        System.out.println(clue);        System.out.println(cluenum);        // Create a Socket        DatagramPacket packet, packet1;        InetAddress address;        DatagramSocket socket;        socket = new DatagramSocket();        address = InetAddress.getByName("127.0.0.1");    }}
查看完整描述

1 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

您正在从服务器发送十六进制编码的数据。那么你的客户不应该再次转换那个十六进制DatatypeConverter.printHexBinary(num)


而不是客户做


   String n2 = (n1.replace("Clue: ", ""));

   byte[] num = n2.getBytes(StandardCharsets.UTF_8);

   String num1 = DatatypeConverter.printHexBinary(num);

   clue.add(i1, num1);

做就是了


 String n2 = (n1.replace("Clue: ", ""));

 clue.add(i1, n2);

(并在else您的客户的条款中进行类似的操作。)


查看完整回答
反对 回复 2021-11-17
  • 1 回答
  • 0 关注
  • 115 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信