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

正文內(nèi)容

嵌入式課程設(shè)計(jì)-文庫吧資料

2025-06-23 16:11本頁面
  

【正文】 ct sockaddr*)amp。 } if(FD_ISSET(nListenSock,amp。 if(nSelectR==1) //若發(fā)生錯(cuò)誤 { continue。rset,NULL,NULL,amp。 while(1) //while 循環(huán) { rset =allset。 //定義包結(jié)構(gòu) unsigned char send_buffer[200]。 int nAddrSize =sizeof(clientAddr)。 CLIENT_INFO *pTempClient。 int nSelectR。 nMaxFd =nListenSock。 FD_SET(nListenSock,amp。 FD_ZERO(amp。 fd_set rset,allset。 } //等待退出 while(1) { if(pthread_join(nSrvThreadId,NULL)!=0) { return。 close(nListenSock)。nSrvThreadId,NULL,(void*)amp。 nThreadFlag =1。 return。 } //監(jiān)聽 if(listen(nListenSock,5)0) { printf(listen error!\n)。 close(nListenSock)。 if(bind(nListenSock,(struct sockaddr*)amp。 =htonl(INADDR_ANY)。localAddr,0x0,sizeof(localAddr))。 } //綁定 struct sockaddr_in localAddr。 close(nListenSock)。 if(setsockopt(nListenSock,SOL_SOCKET, SO_REUSEADDR,(char*)amp。 return。 /************主線程相關(guān)**********************/ //創(chuàng)建socket nListenSock =socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)。reader,NULL,(void*)amp。 information[i].weigh = WIGHT[i]。 information[i].number = NUM[i]。 i++) { information[i].name = NAME[i]。 for(i=0。mutex,NULL)。//主函數(shù)void main(void){ /**************子線程相關(guān)*******************/ pthread_t reader = 1。pthread_mutex_t mutex。 // thread start/stop flagCLIENT_INFO *pClientHead=NULL。/****全局變量***/int nListenSock =1。unsigned char WIGHT[5] = {58, 55, 62, 63, 50}。unsigned char NUM[5] = {1,2,3,4,5}。/*數(shù)據(jù)初始化*/char *NAME[5] = {wuhao, chenkai,liumenglin,liujin,liufeng}。}queue。 int b_tail。 //數(shù)據(jù)部分 }Pro_package。 //0 stop 1:send 1 unsigned char num。 //包的數(shù)據(jù)部分長度 4 unsigned char flag。/****協(xié)議包結(jié)構(gòu)****/typedef struct pro_package{ char head。 char *name。 unsigned char weigh。 unsigned char age。}CLIENT_INFO。 struct _CLIENT_INFO_ *pNext。 int nClientPort。void serverThreadProc(void *)。通過本次課程設(shè)計(jì),掌握了Linux下的編程模式和編程方法,熟悉了Linux的基本操作;同時(shí),掌握了開發(fā)環(huán)境的搭建,常用的軟件服務(wù)的安裝,鍛煉了實(shí)際的工程能力;通過多線程編程方法,理解了線程和進(jìn)程的區(qū)別和聯(lián)系,掌握了創(chuàng)建線程和注銷線程的方法;通過對(duì)套接字的使用,掌握了在Linux下基于套接字的網(wǎng)絡(luò)編程,理解了Linux下套接字編程在服務(wù)器端和客戶端的編程流程,了解了網(wǎng)絡(luò)模型,提高了解決問題的能力??蛻舳伺c服務(wù)器通過TCP方式建立連接,使用的通訊函數(shù)接口為套接字,套接字在網(wǎng)絡(luò)編程中有著舉足輕重的地位。圖 414 文件內(nèi)容 第5章 結(jié)論本次課程設(shè)計(jì)的內(nèi)容是基于Linux操作系統(tǒng)的多線程網(wǎng)絡(luò)編程,實(shí)現(xiàn)的功能是“生產(chǎn)者”,“消費(fèi)者”模型,建立TCP服務(wù)器,響應(yīng)客戶端請(qǐng)求,并發(fā)送客戶端請(qǐng)求的數(shù)據(jù)。圖 412 客戶端運(yùn)行,內(nèi)部包含客戶端請(qǐng)求的信息。 }......}第4章 綜合測(cè)試 功能測(cè)試 ,處于監(jiān)聽狀態(tài),等待客戶端來連接,當(dāng)有客戶端連接上,輸出連接的客戶端的信息。 close(ipt_id)。ipt_id,NULL,(void*)amp。 }......//創(chuàng)建交互進(jìn)程 pthread_t ipt_id。 break。 } ......//建立連接 while(1) //建立鏈接 { if(connect(sockfd, (struct sockaddr*)amp。 if(sockfd0) { printf(socket create error\n)。void main(int argc, char** argv){//創(chuàng)建套接字 int sockfd=1。 } //等待退出 while(1) { if(pthread_join(nSrvThreadId,NULL)!=0) { return。 close(nListenSock)。nSrvThreadId,NULL,(void*)amp。 nThreadFlag =1。 return。 } //監(jiān)聽 if(listen(nListenSock,5)0) { printf(listen error!\n)。 close(nListenSock)。 if(bind(nListenSock,(struct sockaddr*)amp。 =htonl(INADDR_ANY)。localAddr,0x0,sizeof(localAddr))。 } //綁定 struct sockaddr_in localAddr。 close(nListenSock)。 if(setsockopt(nListenSock,SOL_SOCKET,SO_REUSEADDR,(char*)amp。 return。 /************主線程相關(guān)**********************/ //創(chuàng)建socket nListenSock =socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)。reader,NULL,(void*)amp。 information[i].weigh = WIGHT[i]。 information[i].number = NUM[i]。 i++) { information[i].name = NAME[i]。 for(i=0。mutex,NULL)。要求存儲(chǔ)有意義的數(shù)據(jù),由于TCP是基于字節(jié)流的特征,需要做組包處理 服務(wù)器端程序設(shè)計(jì)以下是服務(wù)器端程序的主函數(shù)部分,在主函數(shù)中,首先創(chuàng)建了一個(gè)新的線程,然后按照網(wǎng)絡(luò)編程模型中服務(wù)器端的編程方法進(jìn)行了編程,詳細(xì)程序設(shè)計(jì)請(qǐng)參考附件1.void main(void){ /**************子線程相關(guān)*******************/ pthread_t reader = 1。設(shè)計(jì)TCP服務(wù)器程序。,數(shù)據(jù)包含(學(xué)號(hào),姓名(拼音),年齡,身高,體重,當(dāng)前系統(tǒng)時(shí)間(納秒數(shù))使用gettimeofday),可使用隊(duì)列/多維數(shù)組存儲(chǔ)數(shù)據(jù)。其用于標(biāo)識(shí)客戶端請(qǐng)求的服務(wù)器和服務(wù),它是網(wǎng)絡(luò)通信過程中端點(diǎn)的抽象表示,包含進(jìn)行網(wǎng)絡(luò)通信必需的五種信息:連接使用的協(xié)議,本地主機(jī)的IP地址,本地進(jìn)程的協(xié)議端口,遠(yuǎn)地主機(jī)的IP地址,遠(yuǎn)地進(jìn)程的協(xié)議端口。它是一種常用的進(jìn)程之間通信機(jī)制,通過它不僅能實(shí)現(xiàn)本地機(jī)器上的進(jìn)程之間的通信,而且通過網(wǎng)絡(luò)能夠在不同機(jī)器上的進(jìn)程之間進(jìn)行通信。信號(hào)量機(jī)制主要包括下面的基本函數(shù):1) 創(chuàng)建信號(hào)量: sem_init()2) 等待信號(hào)量:sem_wait()和sem_trywait()3) 喚醒進(jìn)程:sem_post()4) 獲取信號(hào)量: sem_getvalue()5) 刪除信號(hào)量: sem_destroy() Socket網(wǎng)絡(luò)編程模型在Linux中的網(wǎng)絡(luò)編程是通過socket接口來進(jìn)行的。進(jìn)程(或線程)根據(jù)信號(hào)量的值來判斷是否對(duì)公共資源具有訪問權(quán)限。PV原子操作是對(duì)整數(shù)計(jì)數(shù)器信號(hào)量sem的操作?;コ怄i機(jī)制主要包括下面的基本函數(shù):1) 互斥鎖初始化:pthread_mutex_init()2) 互斥鎖上鎖:pthread_mutex_lock()3) 互斥鎖判斷上鎖:pthread_mutex_trylock()4) 互斥鎖解鎖:pthread_mutex_unlock()5) 消除互斥鎖:pthread_mutex_destroy()2. 信號(hào)量信號(hào)量也就是操作系統(tǒng)中所用到的PV原子操作,它廣泛用于進(jìn)程或線程間的同步與互斥??焖冁i是指調(diào)用線程會(huì)阻塞直至擁有互斥鎖的線程解鎖為止?;コ怄i可以分為快速互斥鎖、遞歸互斥鎖和檢錯(cuò)互斥鎖。若其他線程希望上鎖一個(gè)已經(jīng)被上鎖的互斥鎖,則該線程就會(huì)掛起,直到上鎖的線程釋放掉互斥鎖為止。這個(gè)互斥鎖只有兩種狀態(tài),也就是上鎖和解鎖,可以把互斥鎖看作某種意義上的全局變量。要注
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1