socket 在計算機中提供了一個通訊端口瓣铣,可以通過這個端口與任何一個具有socket接口的計算機通訊炮叶,應(yīng)用程序在網(wǎng)絡(luò)上傳輸碗旅、接收的信息都通過這個socket接口來實現(xiàn)。
Socket通訊原理如下:
服務(wù)端實現(xiàn)監(jiān)聽連接镜悉,客戶端實現(xiàn)發(fā)送連接請求祟辟,簡歷連接后,發(fā)送和接收數(shù)據(jù)進行通訊侣肄。
具體:
服務(wù)端建立一個socket旧困,設(shè)置好本機的IP和監(jiān)聽的端口并與socket進行綁定,開始監(jiān)聽連接請求稼锅;當接收到請求后吼具,發(fā)送確認,同客戶端建立連接矩距,開始于客戶端進行通訊拗盒。
同時客戶端建立一個socket,設(shè)置好服務(wù)器端的IP和提供服務(wù)的端口锥债,發(fā)出連接請求陡蝇,接收到服務(wù)的確認后,盡力連接赞弥,開始與服務(wù)器進行通訊。
服務(wù)端和客戶端的連接以及它們之間的數(shù)據(jù)傳送均采用同步方式(要鏈接一個ws2_32.lib的庫文件趣兄,頭文件winsock2.h,dll文件Ws2_32.dll).
采用UDP編程則不一樣绽左,UDP編程的發(fā)送端只管發(fā)送就可以了,不用檢查網(wǎng)絡(luò)的鏈接狀態(tài)艇潭。
在服務(wù)器端有一個控制程序(或者windows服務(wù))與多個客戶端程序通訊拼窥,其中主線程有一個socket綁定在一個固定的端口上,負責監(jiān)聽客戶端的sock信息蹋凝。每當啟動一個客戶端鲁纠,客戶端發(fā)送一個socket連接請求,服務(wù)器端就新開啟一個線程鳍寂,并在其中穿件一個socket與該客戶端的socket通信改含,知道客戶端程序關(guān)閉,結(jié)束該線程迄汛,主線程中的socket在應(yīng)用程序退出時關(guān)閉捍壤。