原创 unp筆記三 IO複用基礎概念

IO複用的使用場合 客戶端 客戶處理多個描述符(交互式輸入和網絡套接字),或者客戶處理多個套接字 服務器 服務器處理監聽套接字和已連接套接字,處理TCP和UDP,或者處理多個協議多個服務等 理解IO中的簡單例子,讀數據,兩個階段 1 等待

原创 IA__gdk_gc_new: assertion 'drawable != NULL' failed

在睡意朦朧之際,記錄下晚上的一個小錯誤。 先說一下導致這個錯誤的代碼片段: draw_able=draw_area->window; gc=gdk_gc_new(draw_able); 事實上,單單看這個片段是看不出原因的,出錯說:因爲

原创 const string爲函數參數的警告

今天編程遇到的一個warning: testpasv.c: In function ‘string_ctl’: testpasv.c:7:3: warning: assignment discards ‘const’ qualifier

原创 unp筆記二 多進程服務器

fork進程併發服務器範式 1、fork爲每一個客戶派生一個處理它們的子進程,子進程關閉監聽套接字,父進程關閉已連接套接字 listenfd=socket(...) bind(listenfd,..) listen(listenfd,..

原创 unp筆記一 網絡編程基礎

這幾天一直看不下書啊,也沒有學習的動力,閒着無聊,還是總結下unp前面幾章的知識。 1、簡介 PDU:協議數據單元,在網絡各層中交換的信息單元就叫PDU。例如TCP層的PDU就是tcp分節。 應用層實體之間交換的PDU爲應用數據。 對T

原创 FTP文件傳輸協議

此文主要是從他人博文等官方網站抄錄,夾雜很少的個人見解。 只當FTP備忘錄。 FTP協議與操作系統無關,在任何系統上的程序只要符合FTP協議,就可以相互傳輸數據。 FTP協議中將命令與數據分開傳送,提高效率。 FTP服務器使用2個端口

原创 實現HTTP服務器 筆記一IO函數

實現自己的用於讀寫網絡套接字的IO函數 封裝自己的IO函數的想法是在無意間看了《深入理解計算機系統》系統級IO後想到的,回頭又翻了下《UNIX網絡編程》,發覺還是有這個必要的。 1、直接使用系統級IO函數讀寫網絡套接字的問題 在網絡編程中

原创 HTTP權威指南 總結

不知道是不是開學的原因,最近都沒學習,我還是隨手敲點東西來記錄下吧。 HTTP權威指南是在上個月的時候看的,對於HTTP服務器的理解還是有很大的幫助的。 首先是,HTTP概述 媒體類型,MIME,這個類型是由http服務器負責寫入http

原创 代理服務器和反向代理服務器

代理服務器中的緩存內容是由某些用戶訪問某個頁面而產生訪問請求後,在客戶端代理服務器留下的緩存。 反向代理服務器上的緩存內容是根據網站運維的策略定期、定時地生成的頁面緩存。 代理服務器是工作在客戶端的,他不屬於網站部署的環境。 反向代理服

原创 X視窗系統和GTK

以下內容主要來源於《linux程序設計》 LINUX下有兩個受歡迎的GUI庫:GTK+   KDE/QT 這兩個庫對應的兩個桌面環境是 GNOME KDE ubuntu的默認桌面環境是Unity centos的默認桌面環境是GNOME u

原创 unp筆記四 select和poll

select函數原型 #include<sys/select.h> #include<sys/time.h> int select(int maxfdp1,fd_set *readset,fd_set *writeset,fd_set *

原创 GTK GDK 事件 信號

GTK應用程序是基於事件觸發機制的。 我們使用g_signal_connect()將事件和對事件的處理函數(回調函數)聯繫在一起。但是有時候是信號處理函數,有時候又說事件處理函數,都把人弄暈了。 事件的叫法是比較底層的說法,當我們按了一個

原创 unp筆記五 udp編程

驗證來自服務器的數據報 客戶端recvfrom服務端,通過recvfrom函數中的地址參數記錄和驗證,接受到的服務器IP地址,只保留服務器發來的數據報。 在服務器有多個IP地址的情況下,得到recvfrom返回的地址後,客戶通過DNS找到

原创 rebar3 簡單使用

最近想嘗試用下rebar,在rebar的github主頁發現 rebar已經被拋棄了,那麼就按建議說的使用rebar3 吧 Deprecated Erlang build tool that makes it easy to compi

原创 emysql 源碼閱讀

說明:測試使用的版本checkout源自https://github.com/jkvor/emysql.git 這個版本在github上已經不再更新了 emysql 也是一個常用的erlang mysql數據庫驅動。相比較erlang