怎么实现server端和client端的永远连接

YHL27 2009-04-22 12:59:41
在Socket编程中怎么实现server端和client端的永远连接,在我的代码中client和server只能连一次,而不能持续连接,就是一连接上就不断开了,谢谢!
...全文
175 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongyansheng_max 2009-04-22
  • 打赏
  • 举报
回复
用 tcp 进行连接
YHL27 2009-04-22
  • 打赏
  • 举报
回复
给个具体的client的发消息那段代码,就是发了一次后,不需要再一次运行client,就可以接着发第二次、第...次,整个程序不中断,可以是断断续续发,比如用System.in在字符界面可以是阻塞,我在图型界面下不知道怎么可以得到那种阻塞的效果,就是发了之后不会断开,接着等待下一次输入,直到在次输入发送的消息,一直这样下去。
一头头 2009-04-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 YHL27 的回复:]
我想要的是client端和server端连上后,双方就可以互发消息,不需要重新运行client端之后,client端才可以再次发消息!
[/Quote]

5楼的就是啊
doublecool 2009-04-22
  • 打赏
  • 举报
回复
要用while(true){}让你的ServerSocket一直监听来自Client的请求!
YHL27 2009-04-22
  • 打赏
  • 举报
回复
我想要的是client端和server端连上后,双方就可以互发消息,不需要重新运行client端之后,client端才可以再次发消息!
HopingWhite 2009-04-22
  • 打赏
  • 举报
回复
楼主是想要完成什么工作?如果你是用TCP的话,只要你不主动断开或者网络原因,那么TCP连接是一直存在的,不需要再重新连接

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class SocketExample
{

/**
* @param args
*/
public static void main(String[] args)
{

try
{
ServerSocket ss = new ServerSocket(5050);
while (true)
{
Socket s = ss.accept();
Thread t = new Thread(new Dispatcher(s));
t.start();
}
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}

private static class Dispatcher implements Runnable
{

private DataInputStream dis;

private DataOutputStream dos;

private Socket s;

public Dispatcher(Socket s)
{

this.s = s;
try
{
dis = new DataInputStream(s.getInputStream());
dos = new DataOutputStream(s.getOutputStream());
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}

@Override
public void run()
{

while (true)
{
try
{
String msg = dis.readUTF();
dos.writeUTF("Hello World:" + msg);
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}

}


ty_tarena_pger 2009-04-22
  • 打赏
  • 举报
回复
Sever端死循环加多线程
一头头 2009-04-22
  • 打赏
  • 举报
回复
	public void server(){         //server
try {
ss = new ServerSocket(8888);

while(boo){
s = ss.accept();

dis = new DataInputStream(s.getInputStream());
while(boo){
String str = dis.readUTF();
System.out.println(str);
//dis.close();
}
}
} catch (IOException e) {
System.out.println("connection off");
} finally {
try {if (ss != null)
ss.close();
if (s != null)
s.close();
dis.close();
}catch (IOException e1){
e1.printStackTrace();
}
}

}



	private void connection(){   //client
try {
s = new Socket("127.0.0.1",8888);
System.out.println("socket connected.");
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
sforiz 2009-04-22
  • 打赏
  • 举报
回复
用死循环,while(true){}
还可以实现在服务器接受多个客户端的同时接入。把接收连接请求的全码放在死循环中就可以了。
YHL27 2009-04-22
  • 打赏
  • 举报
回复
可以给个在client端连接的事例吗?
一头头 2009-04-22
  • 打赏
  • 举报
回复
while(true){
..... //连起来
}
aaa7782814 2009-04-22
  • 打赏
  • 举报
回复
用死循环可以吧。。?
mark一下。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧