谁能给一个socket长连接的实例? 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 import java.io.IOException;import java.net.Socket;import java.net.ServerSocket;import com.omn.xmpp.server.util.Logger;public class SocketAcceptThread extends Thread{ /** * 默认的监听端口 */ public static final int DEFAULT_PORT = 5222; /** * 代表监听端口 */ private int serverPort; /** * true表示线程没有停止,继续运行 */ private boolean notTerminated=true; /** *记录对象 */ private Logger log; /** * 监听服务 */ private ServerSocket serverSocket; public SocketAcceptThread(Logger l,int port){init(l,port); } public SocketAcceptThread(Logger l){ init(l,SocketAcceptThread.DEFAULT_PORT); } /** * 初始化 * @param l * @param port */ public void init(Logger l,int port){ this.log=l; this.serverPort=port; try { this.serverSocket=new ServerSocket(serverPort); } catch (IOException e) { log.fatalError("SocketAcceptThread:serversocket初始化失败!!"); } } /** * 运行端口监听 一旦监听到进一步处理后继续去监听 */ public void run() { try { while (notTerminated) { Socket sock = serverSocket.accept(); if (sock != null) { //这里添加处理 try{ System.out.println("SocketAcceptThread:创建了一个connection"); new Connection(sock);//创建了connection }catch(IOException e){ log.error("SocketAcceptThread:建立连接错误"+e.getMessage()); } } } } catch (IOException ie) { if (notTerminated) { log.error("SocketAcceptThread:socket建立错误"+ie.getMessage()); } } catch (Exception e) { log.error("SocketAcceptThread:socket监听错误"+e.getStackTrace()); } try {//无论如何也要关闭 ServerSocket sSock = serverSocket; serverSocket = null; if (sSock != null) { sSock.close(); } } catch (IOException e) { // 关闭不上就不管了 } } /** * 关闭监听. */ public void shutdown() { notTerminated = false; try { ServerSocket sSock = serverSocket; serverSocket = null; if (sSock != null) { sSock.close(); } } catch (IOException e) { // 在关闭不了就不管了 } }} 一般都是accept后启动一个线程去处理,该线程中的处理大致如下短连接:run(){ read //读取请求包 process //处理 write //应答处理结果}长连接:run(){ while(NotEnd){ read process write }} java生成固定宽高的图片 java读取word文档 新年~散分 java中生产者消费者问题 为什么Image.getWidth()得不到图片的宽度? 如何实现同时显示不同类型的内容 求助,如何构造SWING里的CLOSE() 如何对JTextArea中的文本进行行数,列数控制? 哪儿有Visual Cafe的licenses?? applet多级panel大小刷新问题 请问如何将一个图片或一个Frame窗口添加到JPanel上 本人最近想研究研究即时通讯工具的开发,谁有资料?
import java.io.IOException;
import java.net.Socket;
import java.net.ServerSocket;
import com.omn.xmpp.server.util.Logger;
public class SocketAcceptThread extends Thread{ /**
* 默认的监听端口
*/
public static final int DEFAULT_PORT = 5222;
/**
* 代表监听端口
*/
private int serverPort;
/**
* true表示线程没有停止,继续运行
*/
private boolean notTerminated=true;
/**
*记录对象
*/
private Logger log;
/**
* 监听服务
*/
private ServerSocket serverSocket;
public SocketAcceptThread(Logger l,int port){
init(l,port);
}
public SocketAcceptThread(Logger l){
init(l,SocketAcceptThread.DEFAULT_PORT);
}
/**
* 初始化
* @param l
* @param port
*/
public void init(Logger l,int port){
this.log=l;
this.serverPort=port;
try {
this.serverSocket=new ServerSocket(serverPort);
} catch (IOException e) {
log.fatalError("SocketAcceptThread:serversocket初始化失败!!");
}
}
/**
* 运行端口监听 一旦监听到进一步处理后继续去监听
*/
public void run() {
try {
while (notTerminated) {
Socket sock = serverSocket.accept();
if (sock != null) {
//这里添加处理
try{
System.out.println("SocketAcceptThread:创建了一个connection");
new Connection(sock);//创建了connection
}catch(IOException e){
log.error("SocketAcceptThread:建立连接错误"+e.getMessage());
}
}
} }
catch (IOException ie) {
if (notTerminated) {
log.error("SocketAcceptThread:socket建立错误"+ie.getMessage());
}
}
catch (Exception e) {
log.error("SocketAcceptThread:socket监听错误"+e.getStackTrace());
}
try {//无论如何也要关闭
ServerSocket sSock = serverSocket;
serverSocket = null;
if (sSock != null) {
sSock.close();
}
}
catch (IOException e) {
// 关闭不上就不管了
}
}
/**
* 关闭监听.
*/
public void shutdown() {
notTerminated = false; try {
ServerSocket sSock = serverSocket;
serverSocket = null;
if (sSock != null) {
sSock.close();
}
}
catch (IOException e) {
// 在关闭不了就不管了
} }
}
run(){
read //读取请求包
process //处理
write //应答处理结果
}长连接:
run(){
while(NotEnd){
read
process
write
}
}