accept()接到请求后为什么不执行下面的
//服务器部分
class Watch extends Thread
{
Index index;
Frame1 f;
Client c;
Watch(Frame1 f,Index index)
{
this.index=index;
this.f=f;
}
public void run()
{
try
{
index.socket=index.ss.accept();//程序好象只运行到这里
}
catch(
IOException e)
{
f.l1.add(String.valueOf(e.getMessage()));
}
f.l1.add( "有新客户连接 ");//为什么老是不执行这行,与客户连接成功就应该执行啊...
Client c=new Client(index.socket, this.f);
c.start();
while(true)
{
while(index.socket!=null);
try
{
Thread.sleep(400);
}
catch(Exception e)
{}
}
}
}
//客户端部分
try
{
socket=new Socket( "172.18.100.76 ",4567);
if(socket!=null)
{
f.l.add( "connect success ");
ps=new PrintStream(socket.getOutputStream());
StringBuffer info=new StringBuffer( "fffffffff ");
ps.print(info);
ps.flush();
Thread c=new Client(socket,f);
c.start();
}
}
------解决方案--------------------乱七八遭
好好google一下socket编程的src看看
------解决方案--------------------还真是需要好好看看书啊
要把服务器代码和客户端代码放在不同的进程,至少是不同的线程
------解决方案--------------------index.socket=index.ss.accept();发生阻塞了, 因为你的程序是window程序吧,比如你在服务器端想点击一个按钮来启动socket监听,这个时候就会发生阻塞,解决该种类型的阻塞的方法就是,在你点击一个按钮的时候开辟一个新的线程来进入run()方法以启动socket监听。你不妨试一下。