tcp

[virtual] qintptr QAbstractSocket::socketDescriptor()const

如果QAbstractSocket object是有用的返回本地socket descriptor,如果不能用返回-1;

如果socket用QNetworkProxy,本地socket 函数返回可能是不用用的;

如果QAbstractSocket状态是UnconnectedState,socket descriptor也是不能用的

[virtual] bteool QAbstractSocket::setSocketDescriptor(qintptr socketDescriptor,

SocketState=ConnectedState, OpenMode openMode=ReadWrite)

用socketDescriptor初始化QAbstractSocket,

若socketDescriptor可以接受返回 ture 否则 false;

若mode是openMode,则是打开状态,进入socket 状态 由socketState;

读写buffers清空,丢弃现存数据。

qint64 QIODevice::wirte(const char *data, qint64 maxSize)

写下不超过maxSize字节数据到设备,返回实际字节,若错误发生则返回-1;

[signal] void QAbstractSocket::connected()

这个信号是在connectToHost()被调用并且成功建立连接后发送;

注意:有的时候,在connectToHost()被当地主机调用后直接发送;

[virtual]void QAbstractSocket::connectToHost(const QString &hostName, quint16 port,

OpenMode openMode=ReadWirte,NetworkLayerProtocol protocol=AnyIPProtocol)

根据端口号连接主机,可以IPV4,IPV6

socket在openMode模式下,进入HostLookupState查找状态,查找主机名hostName;

若查找成功,会发送hostFound()信号,QAbstractSocket进入ConnectingState连接状态;开始连接查找到的地址。

最后,若连接成功,QAbstractSocket进入ConnectedState连接状态,并且发送连接成功的信号。

否则,socket会发送错误信号error()

hostName可以是IP地址字符串(如 ”22,22,22,66“)也可以是host name("***.com")

QAbstractSocket将会在必要的时候查找,

port是本地字节。

[signal] void QIODevice::readyRead()

在通讯通道一有数据就会发送这个信号,再有数据到达network socket再次发送

readyRead()不会递归发送

在用这个类的时候:是当有新数据到达的时候发送(如果缓存里还有数据,就不要发送),其他时候不要发送。

bool QTcpServer::listen(const QHostAddress &address=QHostAddress::Any, quint16 port=0)

告诉服务器监听来自地址address和端口port的连接需求

若port是0,表示端口自动选择,若地址是QHostAddress::ANY,表示监听所有网络接口

监听成功返回true,否则返回false.

 

posted @ 2022-03-30 11:19  不是一般的水  阅读(161)  评论(0)    收藏  举报