TCP服務器

1、用到的函數

socket函數:打開一個網絡通訊端口,如果成功的話,就像open()一樣返回一個文件描述符,應用程序可以像讀寫文件一樣用read/write在網絡上收發數據,如果socket()調用出錯則返回-1。

wKiom1eWGGTA0edgAAAsvsXIm4I330.png-wh_50

wKioL1eWGNiQFuKMAACWcWwwPi0684.png-wh_50

服務器程序所監聽的網絡地址和端口號通常是固定不變的,客戶端程序得知服務器程序的地址和端口號後就可以向服務器發起連接,因此服務器需要調用bind綁定一個固定的網絡地址和端口號。bind()成功返回0,失敗返回-1。bind()的作用是將參數sockfd和myaddr綁定在一起,使sockfd這個用於網絡通訊的文件描述符監聽myaddr所描述的地址和端口號。

wKiom1eWGQChO75dAAAvrym7qR4754.png-wh_50

監聽函數

wKiom1eWGUKgSENMAAAp6sBrL4A167.png-wh_50

三方握手完成後,服務器調用accept()接受連接,如果服務器調用accept()時還沒有客戶端的連接請求,就阻塞等待直到有客戶端連接上來。

wKiom1eWGZHD75JiAABWPKRq1Ak186.png-wh_50


2、server.c

wKioL1eWGf7D2pQaAABxoTNu_Eg733.png-wh_50

wKioL1eWGf6j07syAABmk_sPp2E754.png-wh_50

wKiom1eWGkbx3vc6AADTTT81Gy8905.png-wh_50


3、client.c

wKiom1eWGnGRP84ZAACb1g0aa6g315.png-wh_50

wKioL1eWGnXBz89jAACnJIXppA8275.png-wh_50


4、運行結果

wKiom1eWGtTCCjybAACQydQKqh8478.png-wh_50



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章