发布网友
共2个回答
好二三四
实现长连接的方法
1、客户端自动退出开读取的动作。前面说了,就算服务端调用了flush方法进行输出刷新,客户端也不一定能退出read的动作,所以还是会阻塞。所以,退出动作必须有客户端程序自己完成,我们可以在服务端没发送完一段消息并且刷新前就进行一个写入结束符号的标志,客户端解析到结束符号时,变可直接退出read的循环读取操作,避免一直阻塞。
2、可以调用有读取一定字节到某个数组的read方法,当然,这只是针对消息定长的情况。
长连接与短连接的概念:前者是整个通讯过
好二三四
实现长连接的方法
1、客户端自动退出开读取的动作。前面说了,就算服务端调用了flush方法进行输出刷新,客户端也不一定能退出read的动作,所以还是会阻塞。所以,退出动作必须有客户端程序自己完成,我们可以在服务端没发送完一段消息并且刷新前就进行一个写入结束符号的标志,客户端解析到结束符号时,变可直接退出read的循环读取操作,避免一直阻塞。
2、可以调用有读取一定字节到某个数组的read方法,当然,这只是针对消息定长的情况。
长连接与短连接的概念:前者是整个通讯过
热心网友
本来socket建立后就是一直保持链接状态的,除非你close掉。可以在外部定义一个类,在当前activity链接socket,跳转到其他activity时,再用这个类获取之前链接的socket。
------解决方案--------------------------------------------------------
本来socket建立后就是一直保持链接状态的,除非你close掉。
热心网友
现编这个就是个多线程服务器,只要在client不释放连接,服务器端的run里边写while(TRUE)循环,那么就可以长期连接。
class ConnectionThread extends Thread{
Socket client;
int counter;
public ConnectionThread(Socket cl,int c){
client = cl;
counter= c;
}
@Override
public void run()
{
try{
String destIP=client.getInetAddress().toString();
int destport =client.getPort();
PrintStream outstream=new PrintStream(client.getOutputStream());
DataInputStream instream=new DataInputStream(client.getInputStream());
String inline=instream.readLine();
}//try
catch(IOException e){System.out.println(e);}
}//run