這裡所講的是基於windows套接字程式設計的基本流程,linux下的socket程式設計也是大同小異,可以參考。
今天先大概講一下基本流程:
1.建立套接字
使用csocket類建立套接字物件時通過該類的建構函式建立的:
csocket::csocket();
例如:csocket sock;
2.繫結位址資訊(服務端)
如果建立的伺服器套接字,那麼就要呼叫bind()將套接字對物件與伺服器位址資訊繫結
bool bind(const sockaddr* lpsockaddr, int nsockaddrlen );
呼叫成功著返回true;否則,返回false。
3.啟動監聽(服務端)
位址資訊繫結套接字成功後,還需要呼叫函式listen()在指定埠監聽客戶端的連線請求。
bool listen( int nconnectionbacklog = 5);
nconnectionbacklog : 表示套接字監聽客戶端請求的最大數目1~5。預設為5.
4.連線伺服器(客戶端)
客戶端建立套接字成功後,可以呼叫connect()向伺服器傳送連線請求。
bool connect( const sockaddr* lpsockaddr, int nsockaddrlen);
呼叫成功返回true,否則返回false。
5.資料交換
伺服器和客戶端都是呼叫send()和receive()進行資料通訊。
virtual int send( const void* lpbuff, int nbuflen, int nflags = 0);
virtual int receive( void* lpbuf, int nbuflen, int nflages = 0);
6.關閉套接字物件
當伺服器和客戶端通訊完成後,還需要呼叫close()函式關閉套接字。
virtual void close();
例如:sock.close();
好了今天就寫到這下次再弄個例項看看。
基本Socket通訊流程
1.初始化socket 用於監聽 1 初始化 socket s s socket 2 繫結 bind s,3 監聽 listen s,2.建立連線 1 檢查狀態 int ret select if ret 0 新連線 2 建立新連線 如果有客戶端請求連線 temp accept 注意,此時並不使用原...
Socket程式設計的流程
socket呼叫的資料型別及其切換函式 htons htols i addr sockaddr in socket呼叫所需函式 wsastartup wsaclearup socket closesocket bind listen accept connect send sendto recv r...
Socket程式設計模型流程
面向連線協議的socket程式設計模型 引用內容 伺服器客戶機 socket bind listen accept socket 阻塞,等待客戶資料 建立連線 connect recv 請求資料 send send 應答資料 recv close close 面向無連線協議的socket程式設計模型...