黑马程序员技术交流社区

标题: 关于服务端Socket疑惑 [打印本页]

作者: 冯华亮    时间: 2012-8-11 19:26
标题: 关于服务端Socket疑惑
  在C/S开发时,首先需要在S端绑定监听端口,接下来就是等待C端客户连接了,换言之就是调用new Socket(xxx).Accept()这个阻塞式方法,其单独开一个线程,那么现在我想问这个线程内部工作机制,望结合具体代码说明之。谢谢!!
作者: 许庭洲    时间: 2012-8-12 12:44

   //通过IP地址和端口创建网络节点对象
   IPAddress address=IPAddress.Parse(服务器Ip地址);
   IPEndPoint endpoint=new IPEndPoint(address,int.Parse(端口));

   //创建一个套接字(工具,固定代码)
   Socket socketWatch =new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

   //将套接字绑定到唯一的网络节点上
   socketWatch.Bind(endpoint);

   //设置监听队列长度
   socketWatch.Listen(10);

   //通过线程为每一个与之连接的客服端分配一个Socket对象:
   Thread threadWatch=new Thread(WatchConnecting);//创建负责监听的线程,并传入监听方法
   threadWatch.IsBackground=true;//设置为后台线程
   threadWatch.Start();//开启线程

   //创建监听方法
   void WatchConnecting()
   {
     while(true)
     {

       //开始监听,一旦监听到客户端的连接请求,就分配一个与之对应的通信套接字
       Socket sokConnection=socketWatch.Accept();

       MessageBox.showDialog("有新的客户端成功连接!");
     }

   }




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2