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