作為一名iOS攻城師,大學期間入門學習的C語言。和大多數學習一樣,俺們都是用著老譚的教材長大的,開發環境vc++6.0(不要意思暴露年齡了)。因此對于linux,socket編程一類的基本上是無從涉及,后續有跟風學習了java,再后來學習python,這樣和C語言應該是漸行漸遠。應該是某種內心的逃避吧,年輕人嘛總是喜歡新事物,總是愛走捷徑。
如果您甘心做個高級語言工程師,那也就算了,基本上用好OC和python在當今時代找份好的工作是沒有問題了。然而一旦你想做些小而精的應用時,就會發現原來要學習的東西是很多了,有些坑是要不過去的。這次就是,近期在做網絡相關的App,突然就發現成堆的優質代碼都是用C寫的,因此不得不把C再找回來。
書歸正傳,socket編程是制作網絡工具的基礎。幸好有本叫做 TCP/IP Socket C 編程書籍作為入門教材,本打算先敲一個hello word體驗一下,發現有很多編程細節書中并沒有涉及,下面我將自己排除過后的坑,給大家介紹一下,方便初學者入門。雖然學習這門技術的人應該不會很多。
一、準備工作
1、環境 ubuntu
2、開發語言 C
3、目標:
(1)簡單TCP服務器,實現自動應答客戶端請求
(2)簡單TCP客戶端,實現向服務端發送請求
二、程序代碼
代碼下載地址:http://cs.ecs.baylor.edu/~donahoo/practical/CSockets2/textcode.html
不過無論是按照教材和下載源碼,通常都很難編譯成功,因為書里面并沒有告訴你如何編譯這些源碼。下面是我整理的代碼
http://pan.baidu.com/s/1o8Fq6N4
三、編譯程序
1、gcc?tcpechoclient4.c -o ?tcpclient4
2.?gcc tcpechoserver4.c -o ?tcpserver4
四、運行
(1)在一個命令行里面運行server
./tcpserver4 5000
(2)在另外一個里面運行client
./tcpclient4 127.0.0.1 "echo this" 5000
(3)運行效果
下面是命令行的輸出結果,client 通過41136 端口聯系服務器 5000
./tcpserver4 5000Handling client 127.0.0.1/41136
在客戶端顯示 下面信息,證明demo成功
Received: echo this