c server client
v0.1.0
使用C套接字創建服務器客戶客戶應用程序。
克隆項目,並進入主要目錄。
打開終端並使用以下命令設置服務器:
./server [port]您應該得到這樣的結果:
Listening on 0.0.0.0:8080之後,使用此命令使用客戶端連接到服務器:
./client [IP] [port]插座編程是連接網絡上兩個節點以相互通信的一種方式。一個套接字(節點)在IP上在特定端口上聆聽,而其他插座則與另一個插座伸出來形成連接。服務器形成偵聽器套接字,而客戶端伸向服務器。
int sockfd = socket ( domain , type , protocol ) int bind ( int sockfd , const struct sockaddr * addr , socklen_t addrlen );創建套接字後,綁定功能將套接字綁定到ADDR(自定義數據結構)中指定的地址和端口號。在示例代碼中,我們將服務器綁定到Localhost,因此我們使用InAddr_any來指定IP地址。
int listen ( int sockfd , int backlog );它將服務器套接字放在被動模式下,在那裡等待客戶端接近服務器建立連接。積壓,定義了sockfd待處理連接隊列的最大長度可能會增長。如果連接請求在隊列已滿時到達,則客戶可能會收到帶有Econnefuse的錯誤。
int new_socket = accept ( int sockfd , struct sockaddr * addr , socklen_t * addrlen );它在收聽套接字的待處理連接隊列中提取第一個連接請求,SOCKFD,創建一個新的連接套接字,並返回一個新的文件描述符,引用該套接字。在這一點上,客戶端和服務器之間建立了連接,他們準備傳輸數據。
int connect ( int sockfd , const struct sockaddr * addr , socklen_t addrlen );Connect()系統調用將文件描述符SockFD引用的套接字連接到ADDR指定的地址。服務器的地址和端口在ADDR中指定。
pthread_t thread_id ;
pthread_create ( & thread_id , NULL , client_handler , ( void * ) & client_socket );使用pthread為我們的每個客戶端創建線程,並使用特定方法處理它們。