幾天來寫的**,一經測試,竟然最基本的練級都沒有成功。甚是失望~整了兩天的時間終於解決了該些問題。現在記錄下來。
first of all,關於sendto()和recvfrom()的引數問題。recvfrom()的最後的乙個引數lenth是指標整型的,而sendto()是普通整形,看了那麼長時間的書竟然剛發現這個問題,甚是汗顏。如果在這兩個引數錯誤,perror()會提示「address error」。
sencondly,關於ip位址的表示。格式:「x.x.x.x"是為了便於使用者閱讀,所形式話成的字串。所以通常#define的時候需要加」「符號。但port是乙個短整形的,所以#define的時候不需要加引號。
thirdly,不要把addr_inet 系列函式與htons()系列函式混淆。它們包含在不同的類庫中。
additionally,編碼過程中需要有一下幾個原則。一,**結構盡量的簡單,要學會使用各種資料結構及union、#typedef等關鍵次。二,自定義的函式的引數盡量向需要使用的函式的引數的型別靠攏。3,注意指標引數的使用。
last,是關於除錯的時候如果發現錯誤,不要犯理所當然的把錯誤鎖定在自己認為的地方,也許,如果始終找不出錯誤的話也許該把注意裡放到別的範圍內,也許錯誤是發生在其它位置,或者錯誤型別為其它。
linux網路程式設計 udp
udp udp收發 udp 協議不需要建立連線,類似於傳送簡訊,因此 udp 的程式設計方式比 tcp 更加簡單。udp 有其自己特有的接受與傳送資料的函式 socket af inet,sock dgram,0 建立socket bind socket fd,struct sockaddr ser...
Linux 網路程式設計(二)UDP程式設計
資料報通訊 對於資料報通訊的伺服器端來說,它不必再在乙個埠上偵聽,以等待建立連線,而只需生成乙個埠描述符,並且把這個埠描述符繫結到本地位址上就可以了。udp網路程式設計具體的操作流程為 使用系統呼叫socket 來獲得檔案描述符,該呼叫的宣告格式為 connect 系統呼叫由客戶端呼叫,它的用法如下...
Linux網路程式設計 UDP程式設計例項
使用udp協議通訊時伺服器端和客戶端無需建立連線,只要知道對方套接字的位址資訊,就可以傳送資料。伺服器端只需建立乙個套接字用於接收不同客戶端發來的請求,經過處理後再把結果傳送給對應的客戶端。伺服器端和客戶端使用udp的流程如下圖示 伺服器端 server.c include include incl...