我创建了一个发送单个数据报包的类,该数据包被另一个程序成功接收。
import java.net.*;
public class UDPServer {
public static void main(final String args[]) throws Exception {
final String sendID = "level1";
final int val = 2;
final DatagramSocket serverSocket = new DatagramSocket(7474);
byte[] sendData = new byte[1024];
final InetAddress IPAddress = InetAddress.getLocalHost();
final String sentence = sendID + new String(" ")
+ new Integer(val).toString();
final String capitalizedSentence = sentence.toUpperCase();
sendData = capitalizedSentence.getBytes();
final DatagramPacket sendPacket = new DatagramPacket(sendData,
sendData.length, IPAddress, 7470);
serverSocket.send(sendPacket);
}
}
我的问题是如何从另一个代码运行此代码,为 sendID
和 val
传递变量。这最终会将信息从游戏发送到音频编程软件,以创建算法分数。
如果代码错误/格式错误,我深表歉意,我不是程序员!
谢谢。
最佳答案
只需创建一个带有两个参数的方法 Send
public class UDPServer {
public void send(final String sendID, final int val) throws Exception {
final DatagramSocket serverSocket = new DatagramSocket(7474);
byte[] sendData = new byte[1024];
final InetAddress IPAddress = InetAddress.getLocalHost();
final String sentence = sendID + new String(" ")
+ new Integer(val).toString();
final String capitalizedSentence = sentence.toUpperCase();
sendData = capitalizedSentence.getBytes();
final DatagramPacket sendPacket = new DatagramPacket(sendData,
sendData.length, IPAddress, 7470);
serverSocket.send(sendPacket);
}
}
现在来自另一个类(class)
UDPServer server = new UDPServer();
server.send("level1", 2);
对您的代码的一些评论:
避免使用首字母大写的变量(即 IP 地址)。通常类以大写字母开头,而不是变量。
你可以简化:
byte[] sendData = new byte[1024];
sendData = capitalizedSentence.getBytes();
由
byte[] sendData = capitalizedSentence.getBytes();
和
final String sentence = sendID + new String(" ")
+ new Integer(val).toString();
通过
final String sentence = String.format("%s %d", sendID, val);
关于java - 没有经验的 java 用户请求有关类的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16134442/