作為一名iOS攻城師履腋,大學(xué)期間入門學(xué)習(xí)的C語(yǔ)言。和大多數(shù)學(xué)習(xí)一樣矮瘟,俺們都是用著老譚的教材長(zhǎng)大的,開(kāi)發(fā)環(huán)境vc++6.0(不要意思暴露年齡了)塑娇。因此對(duì)于linux澈侠,socket編程一類的基本上是無(wú)從涉及,后續(xù)有跟風(fēng)學(xué)習(xí)了java埋酬,再后來(lái)學(xué)習(xí)python哨啃,這樣和C語(yǔ)言應(yīng)該是漸行漸遠(yuǎn)。應(yīng)該是某種內(nèi)心的逃避吧写妥,年輕人嘛總是喜歡新事物棘催,總是愛(ài)走捷徑。
如果您甘心做個(gè)高級(jí)語(yǔ)言工程師耳标,那也就算了醇坝,基本上用好OC和python在當(dāng)今時(shí)代找份好的工作是沒(méi)有問(wèn)題了。然而一旦你想做些小而精的應(yīng)用時(shí)次坡,就會(huì)發(fā)現(xiàn)原來(lái)要學(xué)習(xí)的東西是很多了呼猪,有些坑是要不過(guò)去的。這次就是砸琅,近期在做網(wǎng)絡(luò)相關(guān)的App宋距,突然就發(fā)現(xiàn)成堆的優(yōu)質(zhì)代碼都是用C寫的,因此不得不把C再找回來(lái)症脂。
書歸正傳谚赎,socket編程是制作網(wǎng)絡(luò)工具的基礎(chǔ)。幸好有本叫做 TCP/IP Socket C 編程書籍作為入門教材诱篷,本打算先敲一個(gè)hello word體驗(yàn)一下壶唤,發(fā)現(xiàn)有很多編程細(xì)節(jié)書中并沒(méi)有涉及,下面我將自己排除過(guò)后的坑棕所,給大家介紹一下闸盔,方便初學(xué)者入門。雖然學(xué)習(xí)這門技術(shù)的人應(yīng)該不會(huì)很多琳省。
一迎吵、準(zhǔn)備工作
1躲撰、環(huán)境 ubuntu
2、開(kāi)發(fā)語(yǔ)言 C
3击费、目標(biāo):
(1)簡(jiǎn)單TCP服務(wù)器拢蛋,實(shí)現(xiàn)自動(dòng)應(yīng)答客戶端請(qǐng)求
(2)簡(jiǎn)單TCP客戶端,實(shí)現(xiàn)向服務(wù)端發(fā)送請(qǐng)求
二蔫巩、程序代碼
代碼下載地址:http://cs.ecs.baylor.edu/~donahoo/practical/CSockets2/textcode.html
不過(guò)無(wú)論是按照教材和下載源碼谆棱,通常都很難編譯成功,因?yàn)闀锩娌](méi)有告訴你如何編譯這些源碼批幌。下面是我整理的代碼
http://pan.baidu.com/s/1o8Fq6N4
三础锐、編譯程序
1嗓节、gcc?tcpechoclient4.c -o ?tcpclient4
2.?gcc tcpechoserver4.c -o ?tcpserver4
四荧缘、運(yùn)行
(1)在一個(gè)命令行里面運(yùn)行server
./tcpserver4 5000
(2)在另外一個(gè)里面運(yùn)行client
./tcpclient4 127.0.0.1 "echo this" 5000
(3)運(yùn)行效果
下面是命令行的輸出結(jié)果,client 通過(guò)41136 端口聯(lián)系服務(wù)器 5000
./tcpserver4 5000Handling client 127.0.0.1/41136
在客戶端顯示 下面信息拦宣,證明demo成功
Received: echo this