Socket通信怎样保持长连接?

lxw886 lxw886 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
想通过如下方法来达到长连接的效果,但是总是不行,希望各位大虾指点~

//客户端
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 是否为空来判断是否开线程执行.我想要达到这样的效果,代码问题很大,希望大家帮我看看怎么实现,谢谢
...全文
评论 9
收藏 已收藏
分享
返回顶部
lxw886
Java SE 62,621 成员 307,251 内容