📄 receiver.java
字号:
/*
* Created on 2005-2-13
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package communication;
import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.ObjectInputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Vector;
/**
* @author Emtry Immortal
*
* TODO To change the template for this generated type comment go to Window -
* Preferences - Java - Code Style - Code Templates
*/
public class Receiver extends Thread {
private DatagramPacket packet;
private DatagramSocket socket;
private byte[] recvBuf = new byte[256];
private Message msg = null;
private Vector vListeners = new Vector();
private int port;
public Receiver(int port) {
try {
//创建udp包以接受数据。
packet = new DatagramPacket(recvBuf, recvBuf.length);
//创建接受方的udp端口以接收数据
socket = new DatagramSocket(port);
this.port = port;
//this.setPriority(Thread.MIN_PRIORITY);
} catch (Exception e) {
e.printStackTrace();
}
}
public int getReceivePort() {
return this.port;
}
public void close() {
socket.close();
}
public void run() {
try {
while (true) {
//接受数据
socket.receive(packet);
ByteArrayInputStream byteStream = new ByteArrayInputStream(
recvBuf);
ObjectInputStream is = new ObjectInputStream(
new BufferedInputStream(byteStream));
Object obj = is.readObject();
msg = (Message) obj;
is.close();
for (int i = 0; i < vListeners.size(); i++) {
ReceiverNoteTask recNtk = new ReceiverNoteTask(
(IMsgListener) vListeners.get(i), msg, packet
.getAddress());
Thread notTh = new Thread(recNtk);
notTh.start();
}
}
} catch (Throwable t) {
t.printStackTrace();
}
}
public void addListener(IMsgListener mls) {
vListeners.addElement(mls);
}
}
class ReceiverNoteTask implements Runnable {
IMsgListener obj;
Message msg;
InetAddress address;
/**
* @param obj
* @param msg
* @param address
*/
public ReceiverNoteTask(IMsgListener obj, Message msg, InetAddress address) {
super();
this.obj = obj;
this.msg = msg;
this.address = address;
}
public void run() {
if (obj != null) {
obj.receiveMessage(msg, address);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -