freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于c的短信收發(fā)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文(編輯修改稿)

2024-08-16 05:15 本頁面
 

【文章內(nèi)容簡介】 平臺: Red hat enterprise linux 5, 編譯器 vim,調(diào)試器 gdb,網(wǎng)絡(luò)配置 ifconfig, route 等等。 Client 端需求,本短信收發(fā)系統(tǒng)是基于 linux C 來實(shí)現(xiàn)的,其中客戶端的需求是: client 端可以實(shí)現(xiàn)同號碼段的 client 端進(jìn)行通信,還可以和不同號碼段的 client 進(jìn)行通信。在發(fā)送信息是可以選擇發(fā)送和不發(fā)送,發(fā)送的保存在 里,不發(fā)送的保存在 里,接收到的信息保存在 里,并且 client 端還可以對這些信息進(jìn)行查看。 Sonsever 需求,二級服務(wù)器需要可以實(shí)現(xiàn)同號碼段 client 信息的轉(zhuǎn)發(fā), 當(dāng)收到不是自己號碼段的 client 信息時(shí),需要把信息轉(zhuǎn)發(fā)給一級服務(wù)器,然后通過一級服務(wù)把信息轉(zhuǎn)發(fā)給 client 所在的二級服務(wù)器,這樣來實(shí)現(xiàn)不同號碼段client 端的信息之間的交互。 Send() Recv() Close() Close() 5 Fatherserver 需求,一級服務(wù)可以讓多個(gè)不同號碼段的二級服務(wù)器連接,來解決負(fù)載均衡,并且還要處理來自二級服務(wù)器的消息,轉(zhuǎn)發(fā)給對應(yīng)的二級服務(wù)器來實(shí)現(xiàn)信息的交互。 技術(shù)可行性 本系統(tǒng)是基于 linux C 語言下來實(shí)現(xiàn)短信的收發(fā),其中主要應(yīng)用到了網(wǎng)絡(luò)編程 TCP 進(jìn)行連接,還有 GSM 短信協(xié)議來實(shí)現(xiàn) 短信的正確收發(fā),當(dāng)每連接一個(gè)client 端時(shí)就啟用一個(gè)線程來服務(wù)這個(gè) client,最后使用腳本 shell 來優(yōu)化后面的運(yùn)行步驟。 經(jīng)濟(jì)可行性 經(jīng)濟(jì)可行性是對經(jīng)濟(jì)能力和投資能力,后期的維護(hù)運(yùn)維費(fèi)用的估算,對系統(tǒng)的經(jīng)濟(jì)效益進(jìn)行估算,本短信收發(fā)系統(tǒng)是免費(fèi)提供給用戶的,因?yàn)槭忻嫔嫌胁簧偈召M(fèi)的聊天軟件,可以減少用戶的使用費(fèi)用來增加用戶的使用黏性。 操作可行性 本系統(tǒng)在使用時(shí)需要在 linux系統(tǒng)中開一個(gè)終端來連接自己號碼所在的二級服務(wù)上,因?yàn)闀r(shí)間的緣故并沒有對界面進(jìn)行優(yōu)化,在操作上可能沒有那么的 簡潔和方便。 4 系統(tǒng)的設(shè)計(jì)和圖分析 圖 2 信息體圖 如圖 2 所示是保存信息的結(jié)構(gòu)體,信息中包含發(fā)送者的號碼,發(fā)送的時(shí)間和短信的具體內(nèi)容。 一級: 二級: 圖 3 二級服務(wù)器模擬圖 如圖 3 所示是兩個(gè)服務(wù)器的示意圖(一級和二級 server),一級服務(wù)器和二級服務(wù)之間采用的是 TCP 連接, TCP 是面向連接的可靠的傳輸 [9],確保信息能夠準(zhǔn)確無誤的傳輸給接收者,當(dāng)每一個(gè)二級服務(wù)器連接一級服務(wù)器時(shí),一級服務(wù)器多會開辟一個(gè)線程去服務(wù)二級服務(wù)器,并且用數(shù)組存放二級服務(wù)器連接時(shí)返回的 fd 和二級服務(wù)器所代表的號碼段,這可以確保信息所對應(yīng)的的服務(wù)器并且能夠讓信息正確的轉(zhuǎn)發(fā)。 fatherserver Sonserver1 Sonserver2 Sonserver3 Message 體 number time message 6 Client: 功能: 圖 4 客戶端功能圖 如圖 4所示 client 所實(shí)現(xiàn)的功能,客戶端連接二級服務(wù)器也是采用了 TCP 連接,和服務(wù)器的連接原理是一樣的,客戶可以實(shí)現(xiàn)信息的查詢,可以查詢收信箱,發(fā)信箱和草稿箱等功能。 N 轉(zhuǎn)發(fā) TCP 連接 TCP 連接 TCP 連接 Y 查詢 TCP 連接 轉(zhuǎn)發(fā) 轉(zhuǎn)發(fā) 信息 Y N 圖 5 系統(tǒng)工作流程圖 如圖 5 所示是系統(tǒng)大致的框架和功能示意圖。當(dāng) client 發(fā)送一個(gè)信息時(shí)就會提示是否發(fā)送,發(fā)送就會保存在發(fā)信箱中如果不發(fā)送就保存在草稿箱子中。 client 發(fā)信箱 草稿箱 收信息 fatherserver Sonserver1 Sonserver2 Client1 Client2 Client3 發(fā)信箱 草稿箱 收信箱 是否 send? 是否在 ? 收信箱 7 Client 把信息發(fā)給自己號碼所在的二級服務(wù)器時(shí),二級服務(wù)器就會檢查要發(fā)送至的號碼是否是自己管理的號碼段,如果是自己就把信息轉(zhuǎn)發(fā)給本號碼段的client,如果不是自己號碼段的 client 就把信息轉(zhuǎn)發(fā)給一級服務(wù)器讓一級 服務(wù)器進(jìn)行處理,一級服務(wù)器收到信息時(shí)就會檢查信息的號碼在哪個(gè)二級服務(wù)器所管理的號碼段,然后把信息轉(zhuǎn)發(fā)給對應(yīng)的二級服務(wù)器,最后二級服務(wù)器把信息轉(zhuǎn)發(fā)給對應(yīng)的 client,當(dāng) client 端收到信息時(shí)就會打印出信息的內(nèi)容并把信息保存在收信箱中。 5 系統(tǒng)的實(shí)現(xiàn)和代碼分析 圖 6 一級服務(wù)器運(yùn)行圖 如圖 6所示是一級服務(wù)器的運(yùn)行結(jié)果。 每連接一個(gè)二級服務(wù)器多會返回一個(gè) fd 和它所對應(yīng)的號碼段,然后把這些數(shù)據(jù)保存在一個(gè)數(shù)組里面,供后面信息的匹配和查詢。 = cfd。 strcpy(,buf)。 = all_address。 all_address[geshu].fd = cfd。 strcpy(all_address[geshu].num,buf)。 每連接一個(gè)二級服務(wù)器多會創(chuàng)建一個(gè)線程去服務(wù)它,并且要把連接上二級服務(wù)器數(shù)加 1,和線程數(shù)匹配起來。 send(cfd,hello sonser,13,0)。 pthread_create(amp。,NULL,fun,(void *)amp。client)。 geshu ++。 這是處理來自二級服務(wù)器的 轉(zhuǎn)發(fā)請求,通多號碼段的匹配吧信息轉(zhuǎn)發(fā)給對應(yīng)的二級服務(wù)器上,實(shí)現(xiàn)信息的交互。 8 for(i = 0。i geshu。i++) { if(0 == strncmp(,[i].num,3)) { send([i].fd,amp。send_msg,sizeof(send_msg),0)。 } } 圖 7 二級服務(wù)器運(yùn)行圖 如圖 7 所示,連接了兩個(gè)來自 130 號碼段的 client 端,分別是 13011 和13012client。 二級服務(wù)器需要綁定兩個(gè) socket進(jìn)行通信,一個(gè)是和一級服務(wù)器進(jìn)行通信,另一個(gè)是和 client 端進(jìn)行通信。下面的就是綁定了服務(wù)的地址,實(shí)現(xiàn)和服務(wù)器進(jìn)行信息的交互 [10]。 SPORT = atoi(argv[2])。 strcpy(num,argv[3])。 sfd = socket(AF_INET,SOCK_STREAM,0)。 if(1 == sfd) { printf(socket create fail\n)。 close(myfd)。 return 1。 } 下面的代碼主要是綁定自己的地址用于和 client端之間的通信,首先要確定協(xié)議 9 類型 AF_INET是 TCP,然后綁定自己的端口號和 IP 地址,最后用 ACCEPT()函數(shù)阻塞在那里等待著 client端的連接,經(jīng)過三次握手后就可以進(jìn)行通信了。 = AF_INET。 = htons(SPORT)。 = i_addr(argv[1])。 bzero(amp。(),8)。 SPORT = atoi(argv[4])。 myfd = socket(AF_INET,SOCK_STREAM,0)。 if(1 == myfd) { printf(socket create fail\n)。 return 1。 } = AF_INET。 = htons(SPOR
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1