QTcpSocket類和QTcpServer類

QTcpSocket 詳細描述:
QTcpSocket 類提供一個TCP套接字
TCP是一個面向鏈接,可靠的的通訊協議,很是適合於接二連三的數據傳遞
QTcpSocket 是QAbstractSocket類很是方便的一個子類,讓你建立一個TCP鏈接和數據流交流。
注意:TCP套接字不能以QIODevice::Unbuffered模式來打開服務器

在Symbian系統上,程序想用這個類的話必須擁有NetworkServices平臺支持,若是客戶機缺乏這個能力,將會致使"恐懼"(不明白爲何這麼翻譯)網絡

成員函數:
QTcpSocket::QTcpSocket ( QObject * parent = 0 )
以UnconnectedState態建立一個QTcpSocket對象
QTcpSocket::~QTcpSocket ()   [virtual]‘
析構函數,銷燬對象socket

QTcpServer類ide

提供一個TCP基礎服務類 繼承自QObject
這個類用來接收到來的TCP鏈接,能夠指定TCP端口或者用QTcpServer本身挑選一個端口,能夠監聽一個指定的地址或者全部的機器地址。
 調用listen()監聽全部的鏈接,每當一個新的客戶端鏈接到服務端就會發射信號newConnection()
調用nextPendingConnection()來接受待處理的鏈接。返回一個鏈接的QTcpSocket(),咱們能夠用這個返回的套接字和客戶端進行鏈接函數

若是有錯誤,serverError()返回錯誤的類型。調用errorString()來把錯誤打印出來
當監聽鏈接時候,能夠調用serverAddress()serverPort()來返回服務端的地址和端口。
調用close()來關閉套接字,中止對鏈接的監聽。‘
儘管QTcpServer大多時候設計使用事件循環,也能夠不適用事件循環,可使用waitForNewConnection(),會一直阻塞,知道一個鏈接能夠用或者超時。
在Symbian平臺上,一樣的須要NetworkServices平臺支持。ui

成員函數
------------------------------
void close() 關閉服務,而後服務器講再也不監放任何鏈接
QString errorString()const 錯誤時候返回錯誤的字符串
------------------------------
bool hasPendingConnections()const 若是服務端有一個待處理的鏈接,就返回真,不然返回假
QTcpSocket* nextPendingConnection()
返回一個套接字來處理一個鏈接,這個套接字做爲服務端的一個子對象,意味着當QTcpServer對象銷燬時候,這個套接字也自動刪除,當使用完後明確的刪除這個套接字也好,這樣能夠避免內存浪費。當沒有可處理的鏈接時候,這個函數返回0。
注意:返回的套接字不能再其餘線程中使用。若是想在其餘線程中使用,那麼你須要重載incomingConnection()
-------------------------------------
void incomingConnection(int socketDescriptor)[virtual protected]
當QTcpServer有一個新鏈接時候調用這個虛函數,socketDescriptor參數是新鏈接的套接字描述符
這個函數新建一個QTcpSocket套接字,創建套接字描述符,而後存儲套接字在一個×××的待鏈接鏈表中。最後發射信號newConnection()
重寫這個函數,當一個新鏈接時候,來調整這個函數的行爲。
當服務端使用QNetworkProxy服務器代理時候,使用通常的套接字函數套接字描述符可能不能夠用,這時候應該使用 QTcpSocket::setSocketDescriptor()來設置描述符
--------------------------------------
bool isListening()const
當服務端正在監聽鏈接時候返回真,不然返回假
bool listen( const QHostAddress & address = QHostAddress::Any, quint16 port = 0 )
告訴服務端監聽全部來自地址爲address端口爲Port的鏈接,若是Port爲0,那麼會自動選擇,若是address是QHostAddress::Any,那麼服務端監聽全部鏈接,成功返回1,不然返回0
int maxPendingConnections()const
返回最大容許鏈接數。默認是30
void setMaxPendingConnections(int numConnections)
設定待處理的鏈接最大數目爲numConnections,當超過了最大鏈接數後,客戶端仍舊能夠鏈接服務端,可是服務端不在接受鏈接,操做系統會把這些連接保存在一個隊列中。
-----------------------------------------
QNetworkProxy proxy()const
返回這個套接字的網絡代理層。
void setProxy(const QNetworkProxy & networkProxy)
設置這個套接字的網絡代理層,進制使用代理時候,使用QNetworkProxy::NoProxy類型,例如server->setProxy(QNetworkProxy::NoProxy);spa

quint16 serverPort()const      serverAddress()
當服務端正在監聽時候,返回服務端的端口和地址操作系統

-----------------------------------------
bool waitForNewConnection(int msec=0,bool *timedOut=0)
最大等待msec毫秒或者等待一個新鏈接可用。若是一個鏈接可用,返回真,不然返回假。若是msec不等於0,那麼超時將會被調用
這是一個阻塞函數,最好用在單線程應用程序中。因爲會阻塞。當沒有事件循環可用時候,這個函數很好用。
非阻塞的選項和信號newConnection()關聯起來。
當msec爲-1時候,函數將沒有超時。線程



查看代碼示例翻譯

相關文章
相關標籤/搜索