原创 17 multicast示例

1、組播IP地址      224.0.0.0 ~ 239.255.255.255            組播以太網地址(MAC地址)      開頭高三個字節總是 01:00:5e 2、組播分爲兩部分:      a、組播數據流 ,目的

原创 19-20 xshell/quagga開發流程案例

1. xshell需求: a. 用戶能登錄服務器; b. 用戶端輸入命令,一些linux系統管理的相關命令; c. 一些客戶端自定義命令,如exit,help等 2. 項目實施之流程圖 3. 項目實施之協議定義 協議一般有兩種方式:

原创 24 實現http服務器端

1. HTTP:Hypertext Transfer Protocol超文本傳輸協議。超文本是可以根據客戶端請求而跳轉的結構化信息。 HTTP協議是以超文本傳輸爲目的而設計的應用層協議,是基於TCP/IP實現的協議,實現該協議就相當於實現

原创 10-11-12 IO複用及select例子

1. 阻塞式IO 2. 非阻塞式IO 3. IO複用Select / epoll 4. 信號驅動IO 5. 異步IO 6. select示例 #include "socket_includes.h" int mz_ipv4

原创 9 多進程併發服務器模型

1. 多進程併發服務器的實現,學習點: fork子進程處理新客戶端連接請求; 通過信號回收斷開連接的子進程資源,不會讓client主動斷開時子進程處於僵死狀態; 封裝功能函數,實現模塊化。 #include "socket_include

原创 16 UDP廣播示例

1. 例程如下 #include "socket_includes.h" int main(int argc, char *argv[]) { int sockfd; struct sockaddr_in server, c

原创 lesson1 什麼是線程

1. 進程:一個正在執行的程序,它是資源分配的最小單位。 2. 線程:輕量級進程,程序執行的最小單位,程序獨立調度和分配CPU的基本單位,它是進程中的一個實體。 一個進程中可以有多個線程,共享進程的所有資源,線程本身只包含一點必不可少的

原创 lesson6 基於多線程的tcp併發服務器

1. 每條新連接的client都會拋出一個新線程處理事件 /*DATA: 2015-4-20 *AUTHOR: WJ *DESCRIPTION: 多線程TCP服務器 * 1、int socket(int domain, in

原创 lesson2 線程的創造和生命

1. 線程ID:   線程 進程 標識符類型 pthread_t pid_t 獲取ID pthread_self() getpid() 創建 pthread_create() fork() pthread_t在linux中是un

原创 lesson4 線程同步

1. 互斥量mutex 2. 讀寫鎖:pthread_rwlock_t rwlock//非常適合讀次數大於寫次數的程序 讀寫鎖的三種狀態:讀模式加鎖、寫模式加鎖、不加鎖。一次只有一個線程佔用寫模式的讀寫鎖,但是多個線程可以同時佔用讀模式的

原创 lesson5 線程的高級屬性

1. 一次性初始化: 互斥量智能初始化一次,再次初始化會出現錯誤。比如自己寫庫函數時將互斥量封裝進去,這時一次性初始化就用上場了。 定義變量pthread_once_t once_control = PTHREAD_ONCE_INIT;

原创 14-15 高併發服務器中epoll編程

1. 通過epoll實現高併發服務器模型 LT(level triggered)是缺省的工作方式,並且同時支持block和no-block socket.在這種做法中,內核告訴你一個文件描述符是否就緒了,然後你可以對這個就緒的fd進行IO

原创 18.2 多線程服務器端的實現2

1. 線程同步 a. 需要線程同步的情況:1)同時訪問同一內存空間;2)需要指定訪問同一內存空間的線程執行順序。 b. 同步技術:互斥量Mutex和信號量Semaphore 將臨界區比喻成洗手間,線程同步理解成一把鎖。 爲了保護個人隱私

原创 1. 網絡編程基礎與Wireshark使用

1. 看麥子課程的嵌入式Linux網絡編程基礎視頻,作個筆記,一是加深印象,而是便於記錄要點。 2. 網絡編程拓撲圖 局域網如下: 廣域網: 3. wireshark使用: filter :過濾方法特別多,可以參考ubiqua的使用方

原创 18 原始套接字

1. 創建原始套接字 注意:原始套接字要超級用戶才能使用。 調用socket函數,即可創建原始套接字。參數需要注意變更: int socket(AF_INET,SOCK_RAW,protocol) int socket(AF_PACKE