我的服务器想用同一个端口接受多路client的数据,发送的时候也想用同一个端口把数据发送到连接的client,这方法可行吗?这样的话,服务器就开一个端口就可以了,之前服务器是每个client连接的时候都多开一个监听和发送的端口。谢谢!

解决方案 »

  1.   

    服务器先创建的socket一直处于监听状态(这个socket不发送也不接受数据),然后用accept返回的新socket进行通信。监听工作可以由work thread完成。
      

  2.   

    我好久没写通讯了,好像只是监听的时候需要指定一个端口号,通讯,就是说发送和接收数据,不管多少个client端,都共用这个端口。LZ怎么每个client端连接时候,服务器"多开一个监听和发送的端口",不解,为什么这么做?LZ帮忙给我点分吧,我差几十分就4个三角了
      

  3.   

    当然可行,这也是聊天服务器等通讯实现的基本方法,服务器方面,重载两个CSocket分别为CListenSocket,CReceiveSocke。CListenSocket用来在某个端口监听,在OnAccept里面把一个一个客户端socket存到列表里去。
    CReceiveSocke用来接发消息,OnReceive里面可收到任何客户端发送的消息,由当前socket辩识
    哪个客户端,遍力一便socket列表亦可向其他客户端发送刚收到的消息。
      

  4.   

    晕倒,监听端口是固定的,连接上来以后系统会分配一个不通的端口于客户端匹配,客户端和服务端是一对,都有各自的端口的,用netstat可以看得到