gpt4 book ai didi

java - 如何在java中通过UDP数据报发送字符串数组?

转载 作者:行者123 更新时间:2023-11-30 07:47:13 25 4
gpt4 key购买 nike

我用 java 编写了一个程序,用于从数据库检索数据并将其存储在名为 Records 的字符串数组中。该程序将String msg发送到包含测试客户端的服务器。您能否告诉我如何发送String [] Records而不是字符串消息?..

感谢您的帮助谢谢您

这是程序:

import java.io.*;
import java.net.*;
import java.sql.*;

public class Client {

public static void main(String[] args) {
String [] Records= new String[5];
int x = 1;
while (true){
try {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:DDS_DSN");
Statement st = con.createStatement();



PreparedStatement ps = con.prepareStatement(
"SELECT * FROM request_dns " +
"WHERE id = ?");
ps.setInt(1, x);
ResultSet rs = ps.executeQuery();


while ( rs.next() ) {
Records[0]= rs.getString("id");
Records[1]= rs.getString("source_ip");
Records[2]= rs.getString("source_port");
Records[3]= rs.getString("destination_ip");
Records[4]= rs.getString("destination_port");

System.out.println(Records[0]);
System.out.println(Records[1]);
System.out.println(Records[2]);
System.out.println(Records[3]);
System.out.println(Records[4]);
}
con.close();
} catch (Exception e) {
System.out.println(e);

}


DatagramSocket skt;

try{

skt =new DatagramSocket();
String msg ="test client"; ///////////////// sent messege
byte [] b = msg.getBytes();
InetAddress host=InetAddress.getByName("localhost"); ///////// inserting the destination IP address

int serverSocket =6700; ///////////////////port number

////////////////////////////////packet sender
DatagramPacket request = new DatagramPacket (b,b.length,host,serverSocket);
skt.send (request);

/////////////////////packet receiver
byte [] buffer = new byte [1000];
DatagramPacket reply = new DatagramPacket (buffer,buffer.length);
skt.receive(reply);
System.out.println("client received \t"+new String(reply.getData()) );

skt.close();




}

catch(Exception ex){

}

x++;
}
}

}

最佳答案

有很多很多方法可以做到这一点,但也许最简单的是将多个字符串转换为一个字符串,然后再转换回来。这样您的其余代码就会像现在一样。

String[] array = "a,b,c,d,e".split(",");
// to join multiple strings into one.
String s = Stream.of(array).collect(Collectors.joining(","));
// to split multiple strings from on.
String[] array2 = s.split(",");

您可能会找到更好的分隔符,例如 "|""\uffff",具体取决于您使用的编码。

注意:UDP 是一种有损协议(protocol),这意味着无法保证会收到数据包,并且发送方无法知道这已经发生。您可以添加协议(protocol)来减少传输损耗,但是使用执行此操作的现有库或 TCP 通常更简单。

关于java - 如何在java中通过UDP数据报发送字符串数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33746820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com