多个Socket怎么识别和下发?



  • 通过QTcpServer::nextPendingConnection()获取到多个的socket保存起来一个QList里,
    现在的问题是:要向指定的客户端发送数据,但是不知道QList<socket *>里的哪个socket对应指定的客户端?



  • 用socket描述符来区分 你想要的那个



  • @大黄老鼠 socket描述符是服务端接收到新连接,在服务端生成的?
    还是客户端生成,发送到服务端的呀?
    能否来个小小例子



  • 此回复已被删除!


  • @taadis socketserver里有个incoming参数就是socket描述符,你把它绑到一个tcpsocket上,把tcpsocket放到list中,这样,你用的时候直接从list中找你需要的



  • @大黄老鼠 文档逛了圈,没看到socketServer里有个incoming参数呀。。。



  • @大黄老鼠 还是说:一个新socket连接进来是没有标识的,连接成功后,socket再发送一个标识信息上来,然后和对应的socket绑定起来?



  • @taadis 抱歉抱歉,我没写好,我想说的是这个
    void QTcpServer::incomingConnection(qintptr socketDescriptor)
    This virtual function is called by QTcpServer when a new connection is available. The socketDescriptor argument is the native socket descriptor for the accepted connection.

    The base implementation creates a QTcpSocket, sets the socket descriptor and then stores the QTcpSocket in an internal list of pending connections. Finally newConnection() is emitted.

    Reimplement this function to alter the server's behavior when a connection is available.

    If this server is using QNetworkProxy then the socketDescriptor may not be usable with native socket functions, and should only be used with QTcpSocket::setSocketDescriptor().

    Note: If you want to handle an incoming connection as a new QTcpSocket object in another thread you have to pass the socketDescriptor to the other thread and create the QTcpSocket object there and use its setSocketDescriptor() method.

    See also newConnection(), nextPendingConnection(), and addPendingConnection().
    你继承QTcpServer重写这个函数就好了


 

最近的回复

  • @jiangcaiyang 如果需要自动化测试,也用的上

    阅读更多
  • @青山白云 这个可能有点用,但是可能更多局限于爬虫领域吧。

    阅读更多
  • https://blog.csdn.net/huilan_same/article/details/51896672

    python制作爬虫时候使用selenium进行自动化
    使用chromedriver时候需要对应版本

    chromedriver版本 支持的Chrome版本 v2.39 v66-68 v2.38 v65-67 v2.37 v64-66 v2.36 v63-65 v2.35 v62-64 v2.34 v61-63 v2.33 v60-62 v2.32 v59-61 v2.31 v58-60 v2.30 v58-60 v2.29 v56-58 v2.28 v55-57 v2.27 v54-56 v2.26 v53-55 v2.25 v53-55 v2.24 v52-54 v2.23 v51-53 v2.22 v49-52 v2.21 v46-50 v2.20 v43-48 v2.19 v43-47 v2.18 v43-46 v2.17 v42-43 v2.13 v42-45 v2.15 v40-43 v2.14 v39-42 v2.13 v38-41 v2.12 v36-40 v2.11 v36-40 v2.10 v33-36 v2.9 v31-34 v2.8 v30-33 v2.7 v30-33 v2.6 v29-32 v2.5 v29-32 v2.4 v29-32 查谷歌浏览器版本

    地址栏输入chrome://settings/help

    0_1528459921154_16bbaf4d-0e8e-42cd-9e52-f8fc43932871-image.png

    所有chromedriver均可在下面链接中下载到:

    http://chromedriver.storage.googleapis.com/index.html

    阅读更多
  • 0_1528166192946_20180605_103351.gif

    源代码

    Fork me on Gitee

    阅读更多

关注我们

微博
QQ群











召唤伊斯特瓦尔