日期:2014-05-20  浏览次数:20718 次

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监听。你不妨试一下。