返回信息流这是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类不能实例化的?
这是一条镜像帖。来源:北邮人论坛 / java / #33555同步于 2014/8/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
初学java遇到一个问题,求小伙伴们帮忙解答
petok
2014/8/12镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
【 在 HB0318 的大作中提到: 】
: 你导入的包是import javax.sound.midi.Transmitter;你写的.Transmitter类不在这个包里吧。
[ema33]谢谢你,问题解决了!