📄 tcpserver.java
字号:
package ffcs.lbp.common;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
import ffcs.logging.Log;
import ffcs.logging.LogFactory;
/**
* <p>
* Title: 小区推送系统Le接口程序
* </p>
* <p>
* Description: SOCKET 服务监听类 , 监听客户端的连接操作,采用非阻塞通信,当客户端连接上后,
* 添加到LcMgrIOProcess进行相关处理
* </p>
* <p>Copyright: 2008 北京福富软件技术股份有限公司福州分公司 </p>
* <p>Company: 北京福富软件技术股份有限公司福州分公司</p>
* @author chenxin
* @version 1.0
*/
public class TcpServer extends Thread {
private static Log log = LogFactory.getLog(Connection.class);
private int port;
private LocInfoMgrIOProcess ioProcess;
private ServerSocketChannel ssc = null;
private boolean runFlag = true;
public TcpServer(int port, LocInfoMgrIOProcess iop) {
this.port = port;
this.ioProcess = iop;
}
/**
* 起动服务
*
* @return true 启动成功,false启动失败
*/
public boolean startServer() {
boolean result = false;
try {
//开启server socket通道
ssc = ServerSocketChannel.open();
ssc.socket().bind(new InetSocketAddress(port));
result=true;
} catch (IOException e) {
e.printStackTrace();
}
if(result){
super.start();
}
return result;
}
/**
* 停止该服务
*/
public void stopThread() {
try {
if (ssc != null && ssc.isOpen()) {
ssc.close();
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
runFlag = false;
}
/**
* 线程运行方法
*/
public void run() {
runFlag=true;
// 监听连接,并开始通讯
log.info("server start listening on port " + port);
while (runFlag) {
try {
// 接受connection
SocketChannel channel = ssc.accept();
channel.configureBlocking(false);
ioProcess.addNewLocInfoMgrConn(channel);
} catch (Throwable e) {
e.printStackTrace();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -