[英]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);
您已經創建了一個位於端口3000
的ServerSocket
,因此當您嘗試創建另一個時,它將嘗試將自身綁定到該套接字,但由於您的第一個ss
仍坐在那里而無法成功。 您應該只創建一個ServerSocket
並在線程連接到該ServerSocket
時從該ServerSocket
獲取套接字連接。
這能回答您的問題嗎?
ss.accept()將阻塞,直到接收到連接為止。 您如何連接到它?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.