基于Linux的Socket網(wǎng)絡(luò )編程的性能優(yōu)化
3.2 Socket編程流程
Socket編程采用客戶(hù)/服務(wù)器模式。因此編程分為服務(wù)器端和客戶(hù)端兩部分。
每一個(gè)Socket都用一個(gè)半相關(guān)描述(協(xié)議,本地地址,本地端口)來(lái)表示,Socket也有一個(gè)類(lèi)似于文件打開(kāi)的函數,該函數返回一個(gè)整型的Socket描述符,隨后建立連接,數據傳輸等操作都通過(guò)Socket來(lái)實(shí)現。
編程流程如下:服務(wù)器端首先建立Socket,返回該Socket的描述符:配置Socket的端口和IP地址;建立監聽(tīng)甬數,檢測是否有客戶(hù)端向服務(wù)器發(fā)送請求,若有則接收該請求,將其放到接收隊列中:從接收隊列中接受一個(gè)請求;并向客戶(hù)端發(fā)送確認連接信息。
客戶(hù)端建立一個(gè)Socket,返回該Socket的描述符;配置Socket端口和IP地址;向服務(wù)器發(fā)送連接請求,并接收服務(wù)器發(fā)回的確認連接信息。雙方通信結束后,關(guān)閉其Socket。進(jìn)行Socket編程的基本函數有socket(),bind(),listen(),accept(), connect(),send(),recv(),close()。圖3為Socket的編程流程圖。本文引用地址:http://dyxdggzs.com/article/157808.htm
3.3 程序的編譯和運行結果
(1)在Linux的VI編輯器下編寫(xiě)服務(wù)器端程序serv.c和客戶(hù)端程序clt.c。運用交叉編譯工具arm-linux-gcc,執行編譯指令生成可執行文件。
其指令為:
#gcc serv.c=0 serv
#gcc clt.c-0 clt
編譯沒(méi)有錯誤則會(huì )生成可執行文件serv和clt。
(2)配置服務(wù)器和客戶(hù)端的IP,保證網(wǎng)絡(luò )暢通,在serv.c中已將服務(wù)器的IP設置為:192.168.2.111。在客戶(hù)端的“網(wǎng)絡(luò )設置”中設置IP為:192.168.2.22,可以通過(guò)ping命令檢測網(wǎng)絡(luò )是否暢通。
(3)在一臺計算機的終端先運行服務(wù)器程序(./serv),再在客戶(hù)端的計算機終端上運行客戶(hù)端程序(./clt 192.:168.2.1l 1)就會(huì )看到結果(Hello,Wang Lei!You are connected!);運行結果如圖4和圖5所示。如果未運行服務(wù)器程序而先運行客戶(hù)端程序將立即提示“Connect:Connection refused”。
p2p機相關(guān)文章:p2p原理
評論