Socket通信怎样保持长连接?
想通过如下方法来达到长连接的效果,但是总是不行,希望各位大虾指点~
服务端在accept之后能够任意的写对象给客户端,而客户端则通过不停地检测serverinput 是否为空来判断是否开线程执行.我想要达到这样的效果,代码问题很大,希望大家帮我看看怎么实现,谢谢
//客户端
import java.io.*;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
static int RMIPort = 9999;
public static void main(String[] args) throws ClassNotFoundException {
try {
Socket socket = new Socket("127.0.0.1",9999);
while(true)
{
ObjectInputStream serverinput = new ObjectInputStream(socket.getInputStream());
if(serverinput.readobject()!=null)
{
new ClientThread(serverinput);
}
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//服务端
import java.io.*;
import java.net.*;
import java.util.ArrayList;
public class Server{
public static void main(String[] args) {
System.out.println("开始侦听请求 。。。。");
ServerSocket serverSocket;
try {
serverSocket = new ServerSocket(9999);
//服务器套接字
Socket clientSocket=null;
clientSocket=serverSocket.accept();//获得客户端的请求的Socket
System.out.println("已侦听到了客户端的请求。。。。。");
ArrayList al = new ArrayList();
al.add("nihao");
while(true)
{
OutputStream os = clientSocket.getOutputStream();
ObjectOutputStream oos=new ObjectOutputStream(os);
oos.writeObject(al);
oos.flush();
oos.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
服务端在accept之后能够任意的写对象给客户端,而客户端则通过不停地检测serverinput 是否为空来判断是否开线程执行.我想要达到这样的效果,代码问题很大,希望大家帮我看看怎么实现,谢谢
...全文
相关推荐
Java实现Socket长连接和短连接
Java实现Socket长连接和短连接,实现原理可参见个人博客
Android的socket长连接(心跳检测)
这是Android的socket长连接(心跳包),由于本人项目中需要用到长连接,所以先做了个demo,亲测是没有问题的。
C# socket异步长连接
服务端监听接收端口,以等待建立连接。 客户端向服务端发送连接请求,得到允许后,建立连接。 客户端发送的所有数据都是通过同一条连接。
java socket长连接客户端服务端(标准实例)
java socket长连接客户端服务端(标准实例),准确无误,流行结构。
Java的socket长连接实例
自己写的Java的socket长连接实例 已测试


Java SE
