1

別のプログラムによって正常に受信される単一のデータグラム パケットを送信するクラスを作成しました。

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です。これは最終的に、ゲームからオーディオ プログラミング ソフトウェアに情報を送信して、アルゴリズムのスコアを作成することになります。

コードが間違っていたりフォーマットが間違っていたりした場合は申し訳ありません。私は本業のプログラマーではありません。

ありがとう。

4

1 に答える 1

6

メソッドを作成するだけで、2つのパラメーターを使用して送信できます

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);
     }
}

そして今、別のクラスから

UDPServer server = new UDPServer();
server.send("level1", 2);

コードに関するいくつかのコメント:

最初の文字が大文字の変数 (IPAddress など) は使用しないでください。通常、クラスは変数ではなく大文字で始まります。

単純化できます:

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);
于 2013-04-21T18:07:05.917 に答える