java socket 长连接 是发送心跳包还是有其他方法?长连接是不是连接服务器的对象要保存起来?最好能给个客户端例子。谢谢~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 只要在client不释放连接,服务器端的run里边写while(TRUE)循环,那么就可以长期连接 主要要点有3个:1)客户端类要定义成单态类:即定义声明一个私有构造,并定义一个自身的私有静态变量以免被多次实例化。2)定时发送心跳包;3)报文发送要固定格式(固定结束符或在开头说明报文长度)public class MyClient{ //确保只有一个实例 private final static MyClient instance = new MyClient(); //服务端对象 private Socket server; //连接忙标志,用于发送心跳包判读 private boolean isFree; //心跳检测频率(毫秒) private long FREN_Q= 30*1000;//30秒 //心跳包内容 private final static HELLO = "hello"; //声明为私有方法,防止外部实例化 private MyClient() { } //获取实例 public MyClient getInstance() { return instance; } //建立连接 private void connect() { try{ ... checkTimer(); }catch() {...} } //报文发送处理 public byte[] process(byte[] data) { isFree =false; .... isFree = true; } //心跳检测 private void checkTimer() { if(isFree) { process(HELLO.getBytes()); }else { ... } }} 这是一个单线程的简单例子,实际使用中可以根据业务需要写成runnable的 有关动态变量的问题 applet小程序的标题如何设置?在线等 java问什么写入是乱码 大家都写的请教高手,可上面貌似没啥高手,郁闷啊。。。。。。。。。 请问 学 netbean 还是eclipse 好阿 ???? 新手上路:有段代码调试不出来,请大虾帮忙找错(提示就1个错) 熟悉socket和流的乱入,请教 请问一个简单的问题 关于qq空间的一个小问题 为什么是0?实在不明! 求求求...升薪路 帮帮忙 看看
1)客户端类要定义成单态类:即定义声明一个私有构造,并定义一个自身的私有静态变量以免被多次实例化。
2)定时发送心跳包;
3)报文发送要固定格式(固定结束符或在开头说明报文长度)
public class MyClient{
//确保只有一个实例
private final static MyClient instance = new MyClient();
//服务端对象
private Socket server;
//连接忙标志,用于发送心跳包判读
private boolean isFree;
//心跳检测频率(毫秒)
private long FREN_Q= 30*1000;//30秒
//心跳包内容
private final static HELLO = "hello";
//声明为私有方法,防止外部实例化
private MyClient()
{
}
//获取实例
public MyClient getInstance()
{
return instance;
}
//建立连接
private void connect()
{
try{
...
checkTimer();
}catch()
{...}
}
//报文发送处理
public byte[] process(byte[] data) {
isFree =false;
....
isFree = true;
}
//心跳检测
private void checkTimer() {
if(isFree) {
process(HELLO.getBytes());
}else {
...
}
}
}