2013-04-21 54 views
1

我创建了一个类,它发送一个数据报数据包,​​它被另一个程序成功接收。没有经验的java用户请求通过类的建议

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

我的问题是我怎么能运行来自另一个这段代码,传递变量sendIDval。这最终会将信息从游戏发送到音频编程软件,以创建算法分数。

道歉,如果代码是错误的/格式错误,我不是交易的程序员!

谢谢。

+2

这是很好的你正在尝试学习Java,但Stack Overflow不是学习这些东西的最佳地方。这是更多的问答网站,面向特定的问题。你问的是,本质上是“我如何做面向对象编程?”。也许其他一些SO用户会在评论中建议好的Java教程网站,但我希望你会看到这个问题因为太宽泛而被封闭。 – Dancrumb 2013-04-21 18:06:04

+0

创建一个方法:'public static void send(String sendID,int value)'并从其他类调用它为'UDPServer.send(“level1”,2);' – NINCOMPOOP 2013-04-21 18:07:03

回答

6

中庸之道创建一个方法发送带有两个参数

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); 
+1

非常感谢,完美的作品。我肯定会不得不重新考虑我的方法,但看到这个例子是如何工作的,我很确定我可以解决这个问题并继续前进。 感谢您提供格式化和简化的提示,总是很高兴能更精简! – Rampartisan 2013-04-21 18:36:15

相关问题