環境搭建
2.進入目錄執行
./configure3.將生成的libunp.a靜態庫複製到/usr/lib/和/usr/lib64/中cd lib //進入lib目錄
make //執行make命令
cd .. //返回unpv13e目錄4.修改unp.h並將其和config.h拷貝到/usr/include中,為了以後include方便sudo cp libunp.a /usr/lib
sudo cp libunp.a /usr/lib64
vi lib/unp.h//將unp.h中#include "../config.h"修改為#include "config.h"
sudo cp lib/unp.h /usr/include5.編譯源**sudo cp config.h /usr/include
cd ./intro跟普通的編譯不一樣的是要在最後加上剛才那個鏈結庫,-l引數加上剛才那個libunp.a去掉lib和後面的.a。最後得到引數-lunp。gcc -o daytimetcpcli daytimetcpcli.c -lunp
下面是socket網路程式設計的例項,**將在後面章節進行詳細說明
乙個簡單的時間獲取客戶程式
1 #include "view codeunp.h"2
3int
4 main(int argc, char **argv)530
if (n < 0
)31 err_sys("
read error");
3233 exit(0
);34 }
上面是tcp當前時間查詢客戶程式的乙個實現。該客戶與伺服器建立乙個tcp連線後,伺服器以直觀可讀格式簡單地送回當前時間和日期。
協議無關性
上面程式與ipv4協議相關。修改該程式,讓它能夠在ipv6執行
1 #include "view codeunp.h"2
3int
4 main(int argc, char **argv)530
if (n < 0
)31 err_sys("
read error");
3233 exit(0
);34 }
包裹函式
本書例子通過包裹函式來進行錯誤處理:約定包裹函式名是實際函式名的首字母大寫形式,例如socket函式是socket的包裹函式,下面**將演示這個包裹函式
1view codeint2 socket(int family, int type, int
protocol)
3
乙個簡單的時間獲取伺服器程式
1 #include "view codeunp.h
"2 #include 3
4int
5 main(int argc, char **argv)
632 }
測試程式
使用root使用者使伺服器程式從後台執行
執行第乙個客戶端程式
127.0.0.1是環迴位址。本例子中客戶端程式連線到伺服器程式,伺服器程式將時間跟日期傳送給客戶端,然後客戶端將它列印到終端中。
UNP卷1 第一章(簡介)
1.時間獲取程式 服務端 srv.c include include include include include include include define sa struct sockaddr define maxline 1024 int main void if waitpid pid,...
第一章 簡介
執行緒的優勢 發揮多處理器的強大能力 由於基本的排程單位是執行緒,因此如果在程式中只有乙個執行緒,那麼最多同時只能在乙個處理器上執行。在雙處理器系統上,單執行緒的程式只能使用一半的cpu資源,而在擁有100個處理器的系統上,將有99 的資源無法使用。在gui應用,執行緒可以提高使用者介面的響應靈敏度...
第一章(簡介)
技術手段 包含運用虛擬專用網路 virtual private network vpn 加密協議,入侵檢測系統 intrusion detection system ids 入侵防禦系統 instrusion prevention system ips 訪問控制列表 access control l...