繁体   English   中英

使用套接字编程的Java中的聊天程序

[英]chat program in java using socket programming

这是我程序的服务器端代码,问题是它接受一个客户端。 当连接另一个客户端时,isConnected方法返回true,但是服务器未从服务器获取消息。 请帮助我,因为这是我在netbeans中的第一个Java程序,我刚刚完成了核心Java的学习。

class Conn extends Thread{
        ServerSocket ss;
        Socket s;
        public void run()
        {
            status.setText(status.getText()+"connecting");
            try{
            while(true)
            {
            s=new Socket();
            ss=new ServerSocket(3000);
            s=ss.accept();
            Read r=new Read(s);
            r.start();
            }
            }catch(Exception e){}
        }

    }
    class Read extends Thread{
        DataInputStream inp;
        PrintStream outp;
        String str;
        Read(Socket s)
        {
            try{
            inp=new DataInputStream(s.getInputStream());
            outp=new PrintStream(s.getOutputStream());
            }catch(Exception sd){}
        }
        public void run()
        {
                status.setText(status.getText()+"\nreading");
            try{
            while(true)
            {
                str=inp.readLine();
                chatwin.append(str);
                outp.println(str);
            }
            }catch(Exception er){}
        }

    }

在分配ss之后移动while逻辑。

try 
{
    ss = new ServerSocket(3000);
    while (ss.isBound())
    {
        s=ss.accept();
        Read r = new Read(s);
        r.start();
    }
}

您的问题是您不能多次执行此操作:

ss = new ServerSocket(3000);

您已经创建了一个位于端口3000ServerSocket ,因此当您尝试创建另一个时,它将尝试将自身绑定到该套接字,但由于您的第一个ss仍坐在那里而无法成功。 您应该只创建一个ServerSocket并在线程连接到该ServerSocket时从该ServerSocket获取套接字连接。

这能回答您的问题吗?

ss.accept()将阻塞,直到接收到连接为止。 您如何连接到它?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM