2008年8月12日 星期二

複習一下linux/unix網路程式設計

講到ethernet這個網路當然不能不講到W. Richard Stevens,兩大著"TCP/IP Illustrated"跟"Unix Network Programming"
堪稱網路程式設計的經典之作,不過往作者竟然年過半百再多一些就西去,不勝令人欷噓,雖然現在網路程式設計工具之多,不過這兩部經典還是有許多可以借鏡的地方

今天就來複習一下吧(如果想學習如何寫C網路程式,我想讀者請放棄,因為我並不打算解釋API),首先是server,只是單純的回傳一個字串給client
值得注意的是在bind的第二個參數型態為
struct sockaddr{
unisgned short as_family;
char sa_data[14];
};
但是一般都用這個型態來替代
struct sockaddr_in{
unsigned short sin_family;
unsigned short int sin_port;
struct in_addr sin_addr;
unsigned char sin_zero[8];
}
我想這真的是因為一些相容性的關係,不然真的是只會造成程式設計師的困擾,因為還要處理一堆轉型的問題
話說網路發展剛開始,網路資源遠比程式設計師"值錢"的多阿Orz

#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define LISTENQ 10

int main(void){
int listenfd,connectfd;
struct sockaddr_in servaddr;
char string[]="Hello~";
listenfd=socket(AF_INET,SOCK_STREAM,0);
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
servaddr.sin_port=htons(8188);
bind(listenfd,(struct sockaddr*)&servaddr,sizeof(servaddr));
listen(listenfd,LISTENQ);
connectfd=accept(listenfd,NULL,NULL);
write(connectfd,string,strlen(string));
close(listenfd);
return 0;
}

2008年8月2日 星期六

M$ .NET framework

話說目前.NET好像已經進入了3.0的版本,很久之前為了.NET推出的新的語言C#,我一直感覺他有推動上的困難,還有整體.NET架構的難以實踐
看著.NET由1.0的外皮到現在的3.0,看到M$硬推Vista取代XP,不禁讓人想到,M$還真有耐心弄出一個全新的平台阿
.NET面對三個難題,一個是平台的普及性,另外一個就是能夠展現平台特性的語言,最後是有足夠的開發團隊(這是全世界的開發者要接受新平台)

M$用Vista取代XP,從核心開始取代,所以M$一定要用Vista取代XP,所以狂推是一定要的,因為不然建構平台會有相當的麻煩

接著是語言這檔子麻煩事情,不過以M$來說,他是經驗豐富阿,不過要取代C/C++成為開發應用程式的主要語言,也非朝夕之功阿;不過光是展現和C/C++一樣的功能,也不足以取代,C/C++發展至今已經是怪物等級的了
沒關係,我來個Managed Extension或者來個CLR C++,保證用C/C++也可以展現.NET的特色,還可以讓開發者繼續用C/C++,可是也不能太便宜你阿~當然要搞的跟以前VB一樣阿,讓你最後得轉向C#才可以,所以你沒看到那種可讀性很低的特性嗎?雜著兩種語法,你看的習慣?"破壞"規格可是我的專長阿
(沒看到M$另外一個功績嗎?XML ODF,M$的創舉,世界上目前還沒有一個文書處理器可以處理,他規格就完備了,還號稱相容過去的ODF,真是敗給他了自己推的竟然沒做出來,起碼他開始喊的時候可以加到他的M$ Office 2007上去,結果也沒有~搞笑)

最後就是開發團隊,這個容易阿,大家幾乎都是商人阿,我們只要平台不賣、開發工具不賣;請問你們這些開發團隊除了買新的之外,你還有啥選擇?我舊的完全不維護囉~反正你拿我怎樣,對喔~差點忘記跟你說,舊的bug我會繼續找,然後繼續公佈,你看我實在非常負責阿,還幫你找系統bug哩,自己要記得自己寫code去patch喔~免得到時候被hack

最後~最後~最後,筆者還搞不清楚一件事情,為何我需要.NET?為何我需要Vista?沒聽過MPEG4叫我換OS,也沒人說3.5G要換電腦,偏偏M$要換整個平台?why?why?why?