QTcpSever & QTcpSocket

Posted xiaowulang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QTcpSever & QTcpSocket相关的知识,希望对你有一定的参考价值。

一、tcp客户端

建立套接字socket

连接信号与槽函数

disconnect(socket,SIGNAL(readyRead()),this,SLOT(readMessage()));
disconnect(this,SIGNAL(alreadyRead()),this,SLOT(returnMessage()));
disconnect(socket,SIGNAL(connected()),this,SLOT(isConnect()));
disconnect(socket,SIGNAL(disconnected()),this,SLOT(isDisconnect()));
disconnect(socket,SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(isError(QAbstractSocket::SocketError)));

connect(socket,SIGNAL(readyRead()),this,SLOT(readMessage()));
connect(this,SIGNAL(alreadyRead()),this,SLOT(returnMessage()));
connect(socket,SIGNAL(connected()),this,SLOT(isConnect()));
connect(socket,SIGNAL(disconnected()),this,SLOT(isDisconnect()));
connect(socket,SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(isError(QAbstractSocket::SocketError)));

然后

socket->connectToHost();

设置要连接的ip和port

 

新的连接来之时;先掉用incomingConnection(qintptr handle)处理,之后再调用newConnect()

incomingConnection用于获取handle,获取socket的id

 

 服务端

tcpSever->listen(QHostAddress::Any,1414)

监听

1 void TcpSever::incomingConnection(qintptr handle)

2 {

3 socket->setSocketDescriptor(handle);

4 } 

 

[virtual protected] 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 another socket is created in the reimplementation of this method, it needs to be added to the Pending Connections mechanism by calling addPendingConnection().

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.

 

以上是关于QTcpSever & QTcpSocket的主要内容,如果未能解决你的问题,请参考以下文章

成人网站PornHub跨站脚本(XSS)漏洞挖掘记

人民日报报道:伟大复兴!数字货币震撼来袭!

python 模块 SQLalchemy

要求的参考折叠规则的简明解释:(1) A& & -> A& , (2) A& && -> & , (3) && &a

Java String 将 '&' 替换为 & 而不是 & 到 &

Oracle基本语法&&函数&&子查询&&分页查询&&排序&&集合操作&&高级分组函数