簡體   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