[英]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.