第二天:
項(xiàng)目階段進(jìn)度要求:
1.定義好數(shù)據(jù)包結(jié)構(gòu)(可只定義現(xiàn)在能用到的,后面需要了在增加)
2.對(duì)于服務(wù)器子線程的創(chuàng)建設(shè)定好它的線程屬性,考慮好為什么這么設(shè)定,客戶端的架構(gòu)也要想想
3.搭建一個(gè)服務(wù)器的用戶信息鏈表
4.在客戶端建立注冊(cè)功能并建立鏈接通信。
今天完成工作內(nèi)容:
1.完成客戶端和服務(wù)器協(xié)議搭建
2.完善多客戶端與服務(wù)器的多線程問(wèn)題
3.完成在服務(wù)器搭建一個(gè)賬戶信息鏈表
4.完成在客戶端的注冊(cè)功能搭建,并能連上通信。
小bug
1.bug:創(chuàng)建多個(gè)客戶端時(shí),最新的客戶端會(huì)取代舊客戶端,舊客戶端與服務(wù)器無(wú)法通信。原因:【傳參的作用域】,在線程函數(shù)中,傳入的是指針也就是指向客戶端sock的值,創(chuàng)建新的客戶端會(huì)刷新,把原來(lái)該位置的值覆蓋,所有造成原有客戶端無(wú)法與服務(wù)器通信。
今天的總結(jié):
1.LSD的特點(diǎn)是客戶端與服務(wù)器間的通信,所以開始時(shí)候想清楚,如何搭建數(shù)據(jù)包并鏈接通信,而不是以前只是一個(gè)進(jìn)程,要清楚重點(diǎn)在服務(wù)器,寫入讀取都在服務(wù)器。
2.把所想的具體步驟寫下來(lái),一步步的實(shí)現(xiàn),例如我今天的構(gòu)思是
1.客戶端的數(shù)據(jù)包結(jié)構(gòu)體的搭建
2.再把數(shù)據(jù)包通道打通,服務(wù)器端read,or 客戶端write
3.服務(wù)器的注冊(cè)情況
4.在服務(wù)器端鏈表的搭建
5.客戶端注冊(cè)狀況搭建
寫完一個(gè)就在后面勾選上。
3.要區(qū)分服務(wù)器和客戶端是兩個(gè)進(jìn)程,兩個(gè)文件,意味著這兩個(gè)都有相似的文件函數(shù),如結(jié)構(gòu)體,數(shù)據(jù)包(服務(wù)器與客戶端的通信協(xié)議);并在建立相應(yīng)的函數(shù)。
4.對(duì)于不用的函數(shù)或語(yǔ)句塊要及時(shí)刪去,注釋掉的語(yǔ)句塊放在函數(shù)里很容易分散注意力,若說(shuō)考慮敲打代碼辛苦,再次輸入可以讓自己對(duì)該知識(shí)點(diǎn)掌握牢固。還可以放在一個(gè)專門的注釋文件里,若用到的時(shí)候,前去copy,效率更高。所以注釋掉代碼不要放在原函數(shù)里,及時(shí)清理是很重要的。