第7課 網路編程

來源:互聯網
上載者:User

標籤:結果   線上   udp   資料   elf   linux   make   http   基於ip   

7.1 tcp

Tcp是一種連線導向的、可靠的、基於IP的傳輸層協議,無論哪一方發送資料,都需要先建立串連,串連是通過三向交握來進行初始化的,

第一次握手,用戶端發送串連請求,等待伺服器確認。

第二次握手,伺服器收到請求,向用戶端發送確認,同時,向用戶端發送資料轉送請求資訊。

第三向交握,用戶端收到串連確認資訊,並向伺服器發送資料接收確認。

完成三向交握以後,開始資料的傳輸。

首先,通過socket函數建立socket通訊端,然後通過bind函數綁定一個連接埠號碼,用listen函數監聽這個連接埠號碼,是否用戶端發送串連請求資訊,一旦有串連請求,通過accept函數來接收相應的請求,並建立串連。最後就可以通過send或者recv函數發送或接收資訊。當然在用戶端同樣要建立socket通訊端,然後通過connect函數向伺服器監聽的連接埠發送串連請求,如果串連成功了以後,伺服器端和用戶端就可以進行資料傳遞了。

有兩個.c檔案,tcp_server.c和tcp_client.c。首先在linux系統裡調試一下,將這兩個檔案放入同一個目錄下,分別編譯一下,命令:sudo gcc -o tcp_server tcp_server.c和sudo gcc -o tcp_client tcp_client.c

然後通過./tcp_server運行伺服器端,再開一個terminal,轉入到同一個目錄下,通過./tcp_client 192.168.0.222 運行用戶端。從伺服器端就可以看到“ok:server has got connect from 192.168.0.222“表示串連成功。我們在伺服器端輸入“hello world”,用戶端可以收到字元的個數,同時收到相應的資料為“helloworld”,此時空格鍵自動被忽略了。

伺服器端:

 

用戶端:

 

接下來,我們將客服端程式下載到開發板,此時需要像第一個程式“”Hello,uClinux“程式一樣做同樣的事,我直接刪除了之前的hello程式,將用戶端的程式寫進同一個目錄scu檔案夾裡,並修改相應的Makefile檔案,如下

EXEC = tcp_client

OBJS = tcp_client.o

all: $(EXEC)

$(EXEC): $(OBJS)

       $(CC) $(LDFLAGS) -o [email protected] $(OBJS) $(LDLIBS)

romfs:

       $(ROMFSINST) /bin/$(EXEC)

clean:

       -rm -f $(EXEC) *.elf *.gdb *.o

完成以後回到目錄uClinux-dist目錄下執行sudo make,然後下載到開發板。下載完成後,在linux端運行伺服器程式./server,

 

並且在開發板上運行用戶端程式./tcp_client 192.168.0.222,可以看到串連成功。

 

 

在伺服器端發送“hello,world”,在開發板上就會收到相應的資料。

 

7.2 udp

Udp和tcp有點不同,udp不需要經過三向交握,將資料發送過去不需要對方回應,就像發簡訊一樣,簡訊發送過去就行了,不需要去瞭解對方收沒收到。

有兩個.c檔案,udp_server.c和udp_client.c。首先在linux系統裡調試一下,將這兩個檔案放入同一個目錄下,分別編譯一下,命令:sudo gcc -o udp_server udp_server.c和sudo gcc -o udp_client udp_client.c。

如所示:

 

同樣,需要在開發板裡驗證一下,這次將開發板作為伺服器,將電腦linux端作為用戶端,驗證結果如下:

 

7.3 線上升級

我們之前的檔案系統和核心鏡像檔案都是通過網線來下載,沒法進行線上升級,接下來通過tftp進行線上升級,

首先在uClinux-dist目錄下,執行sudo make xconfig進行相應的配置,選擇user setting->Network Applications 選擇tftp並且儲存退出,

 

然後執行sudo make,完了以後下載到開發板,命令如所示:

 

 

 

下載核心和鏡像命令不在像之前那樣了,在主機上直接下載。但是,燒錄在哪裡命令還是沒有變。以後燒錄程式,就不用再拔電重啟了。。。

7.4 總結

這一節課講了網路編程,雖然不多,但是每一個學習嵌入式的同學都是必須要掌握的,可見其重要性,內容不多,但需要花時間去理解,雖然不難,但是也不簡單,只有慢慢來,才能理解的透徹。

第7課 網路編程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.