📄 udpsocketservice.java.svn-base
字号:
package jm.net.sv;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import jm.net.ServerProcessor;
import jm.net.common.CommonKeys;
import jm.util.JMFolder;
import jm.util.JMInputStream;
import jm.util.JMOutputStream;
import jm.util.JMRpcThread;
/**
* <p>
* Title: JM
* </p>
*
* <p>
* Copyright: Copyright (c) 2004-2006
* </p>
*
* <p>
* Company: 1SHome
* </p>
*
* <p>
*
* @author Spook
* </p>
*
* @version 1.2.5.2
* @see JDK 1.5.0.6
*/
public class UDPSocketService extends JMRpcThread implements CommonKeys {
final String CLASS_NAME = "SocketServerService";
private DatagramSocket sendSocket_ = null;
private DatagramSocket receiveSocket_ = null;
private DatagramPacket sendPacket_ = null;
private DatagramPacket receivePacket_ = null;
private byte[] sendDataStream_ = null;
private byte[] receiveDataStream_ = null;
private int sendPort_ = 0;
private int receivePort_ = 0;
private InetAddress receiveInetAddress = null;
private int size_ = SIZE_1K;
public UDPSocketService(int sendPort, int receivePort) {
sendPort_ = sendPort;
receivePort_ = receivePort;
receiveDataStream_ = new byte[size_];
}
/**
* 打开通信端口
*
* @return
*/
public synchronized boolean openReceiveService() {
try {
receiveSocket_ = new DatagramSocket(receivePort_);
start();
return true;
} catch (Exception ex) {
ex.printStackTrace();
return false;
}
}
public void run() {
while (true) {
try {
receivePacket_ = new DatagramPacket(receiveDataStream_, size_);
receiveSocket_.receive(receivePacket_);
receiveInetAddress = receivePacket_.getAddress();
receiveDataStream_ = receivePacket_.getData();
// 恢复传送数据对象
JMInputStream _inStream = new JMInputStream(receiveDataStream_);
JMFolder _in = new JMFolder(_inStream);
System.out.println("ooo==="+_in);
String className = _in.getStringValue(CONNECT_CLASS_NAME);
ServerProcessor _serverProcessor = (ServerProcessor) (Class
.forName(className).newInstance());
// 收到数据后进行处理(无返回)
_serverProcessor.doProcessor(_in);
} catch (Exception ex) {
}
}
}
/**
* 发送数据包
*
* @param send
*/
public boolean send(JMFolder send) {
try {
sendSocket_ = new DatagramSocket(sendPort_);
JMOutputStream _outStream = new JMOutputStream();
send.serializeTo(_outStream);
sendDataStream_ = _outStream.toByteArray();
sendPacket_ = new DatagramPacket(
sendDataStream_,
sendDataStream_.length,
InetAddress.getByName(send.getStringValue(CONNECT_HOST_NAME)),
receivePort_);
sendSocket_.send(sendPacket_);
} catch (Exception e) {
e.printStackTrace();
return false;
}
sendPacket_ = null;
sendSocket_ = null;
return true;
}
/**
* 关闭通信端口
*
* @return
*/
public synchronized boolean closeServer() {
sendPacket_ = null;
receivePacket_ = null;
sendSocket_ = null;
receiveSocket_ = null;
//System.exit(0);
return true;
}
public InetAddress getIPAddress() {
return receiveInetAddress;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -