?? sender.java
字號:
/*
* Created on 2005-2-13
*
* comm
*/
package communication;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.util.*;
import java.io.*;
/**
* @author Emtry Immortal
*
* sender
*/
public class Sender {
private DatagramSocket socket;
Vector vMsg = new Vector();
/**
*
*/
public Sender(int port) {
super();
try {
//creat send udp套接字,指定套接字口。
socket = new DatagramSocket(port);
//this.setPriority(Thread.MIN_PRIORITY);
//this.start();
} catch (SocketException e) {
e.printStackTrace();
}
}
public void send(Message msg, InetAddress address, int port) {
byte[] sendBuf = null;
ByteArrayOutputStream byteStream = new ByteArrayOutputStream(128);
try {
ObjectOutputStream os = new ObjectOutputStream(
new BufferedOutputStream(byteStream));
os.writeObject(msg);
os.flush();
sendBuf = byteStream.toByteArray();
} catch (IOException e) {
e.printStackTrace();
}
//創建udp數據包以發送數據
DatagramPacket packet=null;
packet = new DatagramPacket(sendBuf, sendBuf.length, address, port);
SendNoteTask sendNtk=new SendNoteTask(socket,packet);
Thread sndntk=new Thread(sendNtk);
sndntk.start();
}
public void close() {
//發送完畢關閉套接字。
socket.close();
}
}
class SendNoteTask implements Runnable {
private DatagramSocket socket;
private DatagramPacket packet;
/**
* @param socket
* @param packet
*/
public SendNoteTask(DatagramSocket socket, DatagramPacket packet) {
super();
this.socket = socket;
this.packet = packet;
}
public synchronized void run() {
try {
socket.send(packet);
packet = null;
} catch (Throwable t) {
t.printStackTrace();
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -