qtcpsocket 詳細描述:
qtcpsocket 類提供乙個tcp套接字
tcp是乙個面向連線,可靠的的通訊協議,非常適合於連續不斷的資料傳遞
qtcpsocket 是qabstractsocket類非常方便的乙個子類,讓你建立乙個tcp連線和資料流交流。
注意:tcp套接字不能以qiodevice::unbuffered模式來開啟
在symbian系統上,程式想用這個類的話必須擁有networkservices平台支援,如果客戶機缺少這個能力,將會導致"恐懼"(不明白為什麼這麼翻譯)
成員函式:
qtcpsocket::qtcpsocket ( qobject * parent = 0 )
以unconnectedstate態建立乙個qtcpsocket物件
qtcpsocket::~qtcpsocket () [virtual]『
析構函式,銷毀物件
qtcpserver類
提供乙個tcp基礎服務類 繼承自qobject
這個類用來接收到來的tcp連線,可以指定tcp埠或者用qtcpserver自己挑選乙個埠,可以監聽乙個指定的位址或者所有的機器位址。
呼叫listen()來監聽所有的連線,每當乙個新的客戶端連線到服務端就會發射訊號newconnection()
呼叫nextpendingconnection()
來接受待處理的連線。返回乙個連線的qtcpsocket(),我們可以用這個返回的套接字和客戶端進行連線
如果有錯誤,servererror()
返回錯誤的型別。呼叫errorstring()
來把錯誤列印出來。
當監聽連線時候,可以呼叫serveraddress()和serverport()來返回服務端的位址和埠。
呼叫close()來關閉套接字,停止對連線的監聽。『
儘管qtcpserver大多時候設計使用事件迴圈,也可以不適用事件迴圈,可以使用waitfornewconnection(),會一直阻塞,知道乙個連線可以用或者超時。
在symbian平台上,同樣的需要networkservices平台支援。
成員函式
------------------------------
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);
quint16 serverport()const serveraddress()
當服務端正在監聽時候,返回服務端的埠和位址
-----------------------------------------
bool waitfornewconnection(int msec=0,bool *timedout=0)
最大等待msec毫秒或者等待乙個新連線可用。如果乙個連線可用,返回真,否則返回假。如果msec不等於0,那麼超時將會被呼叫
這是乙個阻塞函式,最好用在單執行緒應用程式中。由於會阻塞。當沒有事件迴圈可用時候,這個函式很好用。
非阻塞的選項和訊號newconnection()關聯起來。
當msec為-1時候,函式將沒有超時
QT學習筆記之QT網路程式設計
tcp 傳輸控制協議,提供的是面向連線 可靠的位元組流服務。當客戶和伺服器彼此交換資料前,必須先在雙方之間建立乙個tcp連線,之後才能傳輸資料。tcp提供超時重發,丟棄重複資料,檢驗資料,流量控制等功能,保證資料能從一端傳到另一端。udp 使用者資料報協議,是乙個簡單的面向資料報的運輸層協議。udp...
Qt網路程式設計
qt提供了socket的支援,它採用api形式的封裝,使得程式設計師不需要接觸底層的 就可以對socket進行操作。1.udp的實現 udp不是連線協議,沒有客戶端與服務端的概念。1 建立套接字相關物件 1 qsocketdevice mureceivesocket 套接字物件 23 qsocket...
Qt 網路程式設計
目錄 承載管理 bearer management 控制系統連線狀態的api 程序間通訊 inter process communication in qt qt程式的程序間通訊 網路程式設計 network programming 介紹qt上的網路程式設計 加密套接字協議層 ssl secure ...