在Socket编程中怎么实现server端和client端的永远连接,在我的代码中client和server只能连一次,而不能持续连接,就是一连接上就不断开了,谢谢!

解决方案 »

  1.   

    while(true){
      ..... //连起来
    }
      

  2.   

    可以给个在client端连接的事例吗?
      

  3.   

    用死循环,while(true){}
    还可以实现在服务器接受多个客户端的同时接入。把接收连接请求的全码放在死循环中就可以了。
      

  4.   

    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();
    }
    }
      

  5.   

        Sever端死循环加多线程
      

  6.   

    楼主是想要完成什么工作?如果你是用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();
    }
    }
    }
    }

    }
      

  7.   

    我想要的是client端和server端连上后,双方就可以互发消息,不需要重新运行client端之后,client端才可以再次发消息!
      

  8.   

    要用while(true){}让你的ServerSocket一直监听来自Client的请求!
      

  9.   

    给个具体的client的发消息那段代码,就是发了一次后,不需要再一次运行client,就可以接着发第二次、第...次,整个程序不中断,可以是断断续续发,比如用System.in在字符界面可以是阻塞,我在图型界面下不知道怎么可以得到那种阻塞的效果,就是发了之后不会断开,接着等待下一次输入,直到在次输入发送的消息,一直这样下去。