前幾天在搞一個udp穿透功能的,有個同事,畢業2年多,平時的時候就是整天qq,要么看論壇,讓他寫段代碼,功能是反復從服務端收取ip地址信息并存入map,然后向這些ip地址發送數據包.框架已經有了,只要加入相關的功能代碼就可以了,結果代碼寫了兩個小時,調試花了三個半小時,后來看了他寫的代碼,我暈.
插入map是這么寫的
map<int, string>::iterator it = lmap.end();
it->first = 34;
it->second.ip = inet_ntoa(343);
...
...
把上面的這段代碼改了,還是不行,再看,我再暈,
他兩個客戶端之間數據包封裝和接受的讀取位置根本就不對,難怪取不到需要的數據.
修改了代碼,還是不行,再仔細看代碼,終于找到了原因
原來他用了一個sockaddr_in變量存儲服務器地址,
結果用recvfrom接受數據的時候,也用的這個變量,所以再次向服務器發送地址的時候,就錯了.我當時實在有些抓狂,難道他寫代碼的時候就不能看看幫助文檔?
這幾天看看,繼續老樣子,qq + 論壇.
有的時候,讓新手寫代碼,再修改實在是比較花時間的,確實還不如直接自己寫,但是只要上進,新手總歸回變老手的,關鍵還是看是否有學習的態度.
遇到這樣的,我只能搖頭.