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

正文內(nèi)容

基于c的短信收發(fā)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文-文庫(kù)吧資料

2025-07-12 05:15本頁(yè)面
  

【正文】 argv[4])。 } break。 } } 12 else if(strcmp(ch,n) == 0) { staff_save_(cli_num,cli_msg,argv[6])。 printf(**********send success************\n)。send_msg,sizeof(submit),0)。send_msg,cli_num,cli_msg)。 scanf(%s,ch)。 scanf(%s,cli_msg)。 scanf(%s,cli_num)。 fflush(stdin)。 memset(amp。并且還提供信息的查詢,可以查詢收信箱,發(fā)信箱和草稿箱的信息。send_msg,sizeof(deliver),0)。 printf(\n***zhuan fa to %s server ****\n,)。 msg one_scli。 } else if( i == geshu) { 10 printf(can not find\n)。 printf(\n***send to %s clieant from %s client siccess****\n,ss,)。 send([i].fd,amp。 strcpy(,)。 strcpy(ss,)。i geshu。當(dāng)用戶不在數(shù)組里的時(shí)候,信息就會(huì)自動(dòng)的丟棄了,并提示找不到用戶。 n = bind(myfd,(struct sockaddr *)amp。(),8)。 = i_addr(argv[1])。 } = AF_INET。 if(1 == myfd) { printf(socket create fail\n)。 SPORT = atoi(argv[4])。 bzero(amp。 = htons(SPORT)。 } 下面的代碼主要是綁定自己的地址用于和 client端之間的通信,首先要確定協(xié)議 9 類型 AF_INET是 TCP,然后綁定自己的端口號(hào)和 IP 地址,最后用 ACCEPT()函數(shù)阻塞在那里等待著 client端的連接,經(jīng)過(guò)三次握手后就可以進(jìn)行通信了。 close(myfd)。 sfd = socket(AF_INET,SOCK_STREAM,0)。 SPORT = atoi(argv[2])。 二級(jí)服務(wù)器需要綁定兩個(gè) socket進(jìn)行通信,一個(gè)是和一級(jí)服務(wù)器進(jìn)行通信,另一個(gè)是和 client 端進(jìn)行通信。send_msg,sizeof(send_msg),0)。i geshu。 這是處理來(lái)自二級(jí)服務(wù)器的 轉(zhuǎn)發(fā)請(qǐng)求,通多號(hào)碼段的匹配吧信息轉(zhuǎn)發(fā)給對(duì)應(yīng)的二級(jí)服務(wù)器上,實(shí)現(xiàn)信息的交互。client)。 pthread_create(amp。 每連接一個(gè)二級(jí)服務(wù)器多會(huì)創(chuàng)建一個(gè)線程去服務(wù)它,并且要把連接上二級(jí)服務(wù)器數(shù)加 1,和線程數(shù)匹配起來(lái)。 all_address[geshu].fd = cfd。 strcpy(,buf)。 每連接一個(gè)二級(jí)服務(wù)器多會(huì)返回一個(gè) fd 和它所對(duì)應(yīng)的號(hào)碼段,然后把這些數(shù)據(jù)保存在一個(gè)數(shù)組里面,供后面信息的匹配和查詢。 client 發(fā)信箱 草稿箱 收信息 fatherserver Sonserver1 Sonserver2 Client1 Client2 Client3 發(fā)信箱 草稿箱 收信箱 是否 send? 是否在 ? 收信箱 7 Client 把信息發(fā)給自己號(hào)碼所在的二級(jí)服務(wù)器時(shí),二級(jí)服務(wù)器就會(huì)檢查要發(fā)送至的號(hào)碼是否是自己管理的號(hào)碼段,如果是自己就把信息轉(zhuǎn)發(fā)給本號(hào)碼段的client,如果不是自己號(hào)碼段的 client 就把信息轉(zhuǎn)發(fā)給一級(jí)服務(wù)器讓一級(jí) 服務(wù)器進(jìn)行處理,一級(jí)服務(wù)器收到信息時(shí)就會(huì)檢查信息的號(hào)碼在哪個(gè)二級(jí)服務(wù)器所管理的號(hào)碼段,然后把信息轉(zhuǎn)發(fā)給對(duì)應(yīng)的二級(jí)服務(wù)器,最后二級(jí)服務(wù)器把信息轉(zhuǎn)發(fā)給對(duì)應(yīng)的 client,當(dāng) client 端收到信息時(shí)就會(huì)打印出信息的內(nèi)容并把信息保存在收信箱中。 N 轉(zhuǎn)發(fā) TCP 連接 TCP 連接 TCP 連接 Y 查詢 TCP 連接 轉(zhuǎn)發(fā) 轉(zhuǎn)發(fā) 信息 Y N 圖 5 系統(tǒng)工作流程圖 如圖 5 所示是系統(tǒng)大致的框架和功能示意圖。 一級(jí): 二級(jí): 圖 3 二級(jí)服務(wù)器模擬圖 如圖 3 所示是兩個(gè)服務(wù)器的示意圖(一級(jí)和二級(jí) server),一級(jí)服務(wù)器和二級(jí)服務(wù)之間采用的是 TCP 連接, TCP 是面向連接的可靠的傳輸 [9],確保信息能夠準(zhǔn)確無(wú)誤的傳輸給接收者,當(dāng)每一個(gè)二級(jí)服務(wù)器連接一級(jí)服務(wù)器時(shí),一級(jí)服務(wù)器多會(huì)開辟一個(gè)線程去服務(wù)二級(jí)服務(wù)器,并且用數(shù)組存放二級(jí)服務(wù)器連接時(shí)返回的 fd 和二級(jí)服務(wù)器所代表的號(hào)碼段,這可以確保信息所對(duì)應(yīng)的的服務(wù)器并且能夠讓信息正確的轉(zhuǎn)發(fā)。 操作可行性 本系統(tǒng)在使用時(shí)需要在 linux系統(tǒng)中開一個(gè)終端來(lái)連接自己號(hào)碼所在的二級(jí)服務(wù)上,因?yàn)闀r(shí)間的緣故并沒有對(duì)界面進(jìn)行優(yōu)化,在操作上可能沒有那么的 簡(jiǎn)潔和方便。 技術(shù)可行性 本系統(tǒng)是基于 linux C 語(yǔ)言下來(lái)實(shí)現(xiàn)短信的收發(fā),其中主要應(yīng)用到了網(wǎng)絡(luò)編程 TCP 進(jìn)行連接,還有 GSM 短信協(xié)議來(lái)實(shí)現(xiàn) 短信的正確收發(fā),當(dāng)每連接一個(gè)client 端時(shí)就啟用一個(gè)線程來(lái)服務(wù)這個(gè) client,最后使用腳本 shell 來(lái)優(yōu)化后面的運(yùn)行步驟。 Sonsever 需求,二級(jí)服務(wù)器需要可以實(shí)現(xiàn)同號(hào)碼段 client 信息的轉(zhuǎn)發(fā), 當(dāng)收到不是自己號(hào)碼段的 client 信息時(shí),需要把信息轉(zhuǎn)發(fā)給一級(jí)服務(wù)器,然后通過(guò)一級(jí)服務(wù)把信息轉(zhuǎn)發(fā)給 client 所在的二級(jí)服務(wù)器,這樣來(lái)實(shí)現(xiàn)不同號(hào)碼段client 端的信息之間的交互。 Client 端需求,本短信收發(fā)系統(tǒng)是基于 linux C 來(lái)實(shí)現(xiàn)的,其中客戶端的需求是: client 端可以實(shí)現(xiàn)同號(hào)碼段的 client 端進(jìn)行通信,還可以和不同號(hào)碼段的 client 進(jìn)行通信。 ( 2)開發(fā)硬件平臺(tái):一部有 redhat 虛擬機(jī)的 windows 系統(tǒng)的個(gè)人 pc。 ( 1)開發(fā)語(yǔ)言: 本短信收發(fā)系統(tǒng)主要應(yīng)用了 C 語(yǔ)言進(jìn)行開發(fā)的,應(yīng)用的是 linux下 C 語(yǔ)言和腳本語(yǔ)言 shell 來(lái)共同完成的。 在 多 線 程 訪 問(wèn) 臨 界 資 源 時(shí) , 要 使 用 到 互 斥 所 進(jìn) 行 加 鎖 , 用 到pthread_mutex_init()來(lái)初始化一個(gè)鎖, pthread_mutex_lock()來(lái)對(duì)臨界資源來(lái)進(jìn)行加鎖, pthread_nutex_unlock 來(lái)對(duì)加鎖的資源解鎖,最后還要用到pthread_mutex_destory()來(lái)對(duì)鎖的銷毀和資源的釋放。tid,NULL,pthread_func,NULL)函數(shù)來(lái)實(shí)現(xiàn), tid 是線程號(hào),每個(gè)線程多有一個(gè)獨(dú)立的線程號(hào), pthread_func()是線程要調(diào)用的線程函數(shù) 。我們?cè)谑褂枚嗑€程編程,要熟練的掌握線程之間的通信和同步等問(wèn)題,還要了解每個(gè)線程的優(yōu)先級(jí),這樣才能很好使用多線程來(lái)解決實(shí)際的問(wèn)題。 TCP 服務(wù)端: 客戶端: 建立連接 ( tcp 三次握手) 服務(wù)請(qǐng)求 Socket() Bind() Listen() Accept() 一直阻塞客戶端連接到達(dá) Recv() 處理請(qǐng)求 Sock
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1