BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #33555同步于 2014/8/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

初学java遇到一个问题,求小伙伴们帮忙解答

petok
2014/8/12镜像同步5 回复
这是Test类: package feizuse; import java.io.IOException; import java.net.DatagramPacket; import java.net.InetAddress; import javax.sound.midi.Transmitter; public class Test { Transmitter transmitter; boolean isAlive = true; public Test(int port){ this.transmitter = new Transmitter(); } public void run(){ byte buf[] = new byte[1024]; DatagramPacket udpPacket = new DatagramPacket(buf, buf.length); while(isAlive){ udpPacket = transmitter.receive(); while(udpPacket==null){ //System.out.println("111 Scheduler gets a NULL packet..."); try{ System.out.println("Commander: No packets received, wait..."); sleep(100); udpPacket = transmitter.receive(); }catch(Exception e){ e.printStackTrace(); } } System.out.println("Commander: Get a datagram packet from "+udpPacket.getAddress().toString()+":"+udpPacket.getPort()); System.out.println("Commander: Simulate processing work..."); try{ sleep(1); }catch(InterruptedException e){ e.printStackTrace(); } } } public Transmitter getTransmitter(){ return this.transmitter; } public void shutdown(){ isAlive = false; } public static void main(String args[]){ Test test = new Test(5233);//i select this port test.start(); byte buf[] = "send".getBytes(); DatagramPacket packet = new DatagramPacket(buf,buf.length); Transmitter transmitter = test.getTransmitter(); try { packet.setAddress(InetAddress.getByName("192.168.2.19"));//it's ur own ip for test packet.setPort(5233); while(System.in.read() != 'q'){//input in console to simulate to send packet transmitter.send(packet); } } catch (IOException e) { e.printStackTrace(); } test.shutdown(); } } 这是Transmitter类: package feizuse; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; public class Transmitter{ RecvQueue recvQueue; SendQueue sendQueue; DatagramSocket socket; public Transmitter(int port){ try{ this.socket = new DatagramSocket(port); this.socket.setSoTimeout(20); this.recvQueue = new RecvQueue(this.socket); this.sendQueue = new SendQueue(this.socket); this.recvQueue.start(); this.sendQueue.start(); }catch(SocketException e){ e.printStackTrace(); } } //to receive a udp packet public DatagramPacket receive(){ return recvQueue.getAPacket(); } //to send a udp packet public void send(DatagramPacket packet){ if(packet == null){ return; } sendQueue.addAPacket(packet); } public void shutdown(){ recvQueue.shutdown(); sendQueue.shutdown(); if(socket != null && !socket.isClosed()){ socket.close(); } } } eclipse在Test类里面new Transmitter(port)那一句报错说Cannot instantiate the type Transmitter,为什么Transmitter类不能实例化的?
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
HB0318机器人#1 · 2014/8/12
你导入的包是import javax.sound.midi.Transmitter;你写的.Transmitter类不在这个包里吧。
petok机器人#2 · 2014/8/12
【 在 HB0318 的大作中提到: 】 : 你导入的包是import javax.sound.midi.Transmitter;你写的.Transmitter类不在这个包里吧。 [ema33]谢谢你,问题解决了!
HB0318机器人#3 · 2014/8/12
是我说的原因么? 【 在 petok 的大作中提到: 】 : 谢谢你,问题解决了!
petok机器人#4 · 2014/8/12
【 在 HB0318 的大作中提到: 】 : 是我说的原因么? 嗯嗯,是的,把那个导入包删掉就好了。。
sgoal机器人#5 · 2014/12/19
果然是pokemon catch的例子