記一次UDP的sendto函式錯誤解決

2021-10-23 01:24:15 字數 594 閱讀 4194

在編寫使用select函式的tcp和udp回射程式,出現udp的sendto錯誤,現象如下:

經排查,發現服務端處理udp請求的**有問題,如下:

typedef struct sockaddr sa;

void udp_echo(int udpfd)

udp_echo函式,先用recvfrom讀取udp客戶端傳送的字串,再使用sendto將該字串送回客戶端。**中沒有判斷recvfrom, sendto函式的返回值,為了獲取出錯資訊改寫如下:

void udp_echo(int udpfd) 

if(sendto(udpfd, recvline, n, 0, (sa*)&cliaddr, len) != n)

}

再執行程式,輸出如下:

$ error: invalid argument

$ sendto error

錯誤原因在於cliaddr引數沒有初始化。sockaddr_in結構體在使用之前,需要先使用bzero/memset函式初始化為0,否則出現賦值不完整導致引數無效。

總結:

記一次的使用

將jsp拆分frame框架,因為採用了第一種方式,一直在考慮用jquery非同步請求獲取資料,總是但不到效果,終於在js寫吐的時候選擇了第二種方式。參考網上的使用,大多是下面這個樣子,如果涉及靜態頁面之間定位,是沒有問題的 href 為目標頁面 通過target定位到frame views main...

記一次除錯

這是我最近幾個月來遇到的最棘手的乙個問題 昨天花了4個小時找出第一層次的原因 這個糾結啊,本來和老婆說好準時下班回家吃飯的,結果被這個問題拖了老久。這是乙個gradle的plugin,用來resolve公司內部的dependency的,弄完了跑測試專案的,拋乙個npe,而且npe還不在自己的 裡面。...

記一次 EqualsAndHashCode的疑惑

lombok的使用真的是讓開發人員欲罷不能,乙個 data不管有多少屬性全部搞定,以後加字段也不用從新生成get和set方法。不過這裡還是有乙個小坑需要注意一下,舉個例子 public class equalsandhashcodetest data noargsconstructor access...