第三天:
項(xiàng)目進(jìn)度要求:
1.做登錄功能。a.要求同一個(gè)用戶名不能在兩個(gè)終端同時(shí)登錄捕虽,b.服務(wù)器再建一個(gè)在線鏈表或者標(biāo)識(shí)符標(biāo)志在線狀態(tài)亿卤,c登錄時(shí),密碼三次錯(cuò)誤登出d.退出包的設(shè)立。
今天工作內(nèi)容:
1.調(diào)試昨天寫的注冊(cè)代碼递雀。
2.寫登錄程序代碼并做調(diào)試吆玖、
小bug
1,問(wèn)題:全局變量head只在main.c里面有值筒溃,其他的里面沒(méi)有值,原因:在main.c里面又重新定義的head(局部變量)沾乘;而head的值會(huì)就近賦值原則怜奖。解決方法:去掉main.c里面的新定義的head;
總結(jié):
1. 服務(wù)器與客戶端通信最好都是用數(shù)據(jù)包結(jié)構(gòu)體翅阵,客戶端根據(jù)數(shù)據(jù)包中不同的標(biāo)識(shí)符flag來(lái)提示不同的信息歪玲。善用標(biāo)識(shí)符,對(duì)代碼起到很好的作用
2,.碼代碼快速有效的方法是先一個(gè)函數(shù)掷匠,就運(yùn)行一次滥崩,然后在調(diào)試下,在完成一個(gè)整個(gè)功能再做大的調(diào)試讹语,反復(fù)驗(yàn)證不同的情況钙皮。已達(dá)到代碼能夠面對(duì)不同的情況。
3,,宏定義常量很重要顽决,既能夠快速知道不同的情況是什么含義短条,又面對(duì)能面對(duì)不同情況不至于弄混數(shù)字。注意修改標(biāo)識(shí)符 常量時(shí)才菠,要聯(lián)合顯示輸出端一起改變茸时。
4,/在寫代碼的時(shí)候,會(huì)有很多想法冒出來(lái)赋访,很容易分散注意力可都,不放把這些寫下來(lái)缓待,有時(shí)候會(huì)有不錯(cuò)的點(diǎn)子。例如下面就是我寫代碼冒出的雜念
先把客戶端的main.c 和 其他文件定義完整
把客戶端的功能選擇端和登錄端寫出來(lái)渠牲;寫出退出功能旋炒,定義一個(gè)宏EXIT賦值給數(shù)據(jù)包的標(biāo)識(shí)符flag、當(dāng)標(biāo)識(shí)符 == EXIT時(shí)签杈,客戶端正常退出国葬,服務(wù)器端正常退出
在服務(wù)器端寫出數(shù)據(jù)包類型 選擇功能函數(shù)
再用宏#define重定義兩邊的常量保持一致;要區(qū)分type的宏和flag宏芹壕。
再在服務(wù)器里寫出登錄程序,遍歷列表先找到用戶接奈,在比對(duì)其密碼踢涌、遺留問(wèn)題,未反饋給客戶端已登錄消息
寫一個(gè)switch flag 標(biāo)識(shí)符輸出反饋到客戶端的函數(shù);
客戶端發(fā)送數(shù)據(jù)包過(guò)來(lái)序宦,服務(wù)器也可以發(fā)送數(shù)據(jù)包過(guò)去睁壁,客戶端根據(jù)數(shù)據(jù)包里flag值輸出相應(yīng)的提示、只要兩邊的數(shù)據(jù)協(xié)議是一樣的互捌,沒(méi)什么大問(wèn)題潘明。服務(wù)器端是否要記錄出錯(cuò)情況呢?