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

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于linux下網(wǎng)絡(luò)聊天室的設(shè)計(jì)與實(shí)現(xiàn)-免費(fèi)閱讀

2025-01-02 02:13 上一頁面

下一頁面
  

【正文】 } return 0。 strcat(buf,i_ntoa(headsin_addr))。 buf[0]=39。 //send_list( head)。(39。 //send_list( head)。amp。 } int find_user(USER_LIST head,int newfd) { while(head!=NULLamp。 return del_p。 pointernext=NULL。 } else { printf(%s\n,buf++)。amp。amp。) { printf( 你的客戶端號(hào) :%d\n,buf[1])。 pri_rec(buffer_r)。, BUFF_SIZE)。, BUFF_SIZE)。 } else { close(sockfd)。 FD_SET(STDIN_FILENO, amp。 struct timeval ts。 // int count = 1。 default: break。 while ((c = getopt (argc, argv, p:i:)) != 1) switch (c) { case 39。 int rc, wc。 } }//while (RUNNING) accept close(sockfd)。newfd)。 } else { next_p=last_p(head)。client_addr, amp。attr, PTHREAD_SCOPE_SYSTEM)。 pthread_t pt = 1。//ipv4 = htonl(INADDR_ANY)。 } sockfd = socket(AF_INET, SOCK_STREAM, 0)。 forward(head,buffer_r,newfd)。 err_sys(server recv) } else if (rc == 0) { USER_LIST delet=delete_pointer(find_user(head,newfd), head)。 err_sys(server select) } }//if (ret == 1) else if (ret == 0) { //fprintf(stderr, server time out\n)。 ret = select(maxfd + 1, amp。 = 1。 void *start_routine(void *arg)//thread function { fd_set readfds。 4 詳細(xì)流程圖 : 16 具體操作 (1)在 Linux 的 VI 編輯器下編寫服務(wù)器端程序 serv. c 和客戶端程序 。這樣每個(gè)方向上都有一個(gè) FIN 和 ACK 15 第五 章 linux 下 socket 編程實(shí)現(xiàn)過程 聊天室 socket 編譯鏈接過程 1 監(jiān)聽鏈接 利用 socket, bind, listen 建立鏈接,步驟是: (1) 先利用 socket 函數(shù)處事話 socket 端口,獲得 sock_fd(一種文件描述符)。 返回值:整型套接口描述符。 功能:用來與遠(yuǎn)端服務(wù)器建立一個(gè) TCP 連接。 type指定套接口的類型,為 SOCK_STREAM、 SOCK_DGRAM 或 SOCK_RAW。 ntohs() —— “Network to Host Short” 網(wǎng)絡(luò)字節(jié)順序轉(zhuǎn)換為主機(jī)字節(jié)順序(對(duì)無符號(hào)短型進(jìn)行操作 4 bytes)。 指向 sockaddr_in 的指針和指向 sockaddr 的指針可以相互轉(zhuǎn)換,這意味著如果一個(gè)函數(shù)所需參數(shù)類型是 sockaddr 時(shí),你可以在函數(shù)調(diào)用的時(shí)候?qū)⒁粋€(gè)指向 sockaddr_in 的指針轉(zhuǎn)換為指向 sickaddr 的指針;或者相反。 /* 14 字節(jié)的協(xié)議地址 */ }。 TCP/IP 協(xié)議模型及 各層所用協(xié)議 如圖所示。在進(jìn)程中共享的變量必須用關(guān)鍵字 volatile 來定義,這是為了防止編譯器在優(yōu)化時(shí)(如 gcc 中使用 OX參數(shù))改變它們的使用方式。一個(gè)進(jìn)程可以有多個(gè)線程,也就 是有多個(gè)線程控制表及堆棧寄存器,但卻共享一個(gè)用戶地址空間。 break 在代碼里設(shè)置斷點(diǎn) , 這將使程序執(zhí)行到這里時(shí)被掛起。如 file 裝入想要調(diào)試的可執(zhí)行文件。這就是 Makefile 的規(guī)則。 makefile帶來的好處就是 —— “自動(dòng)化編譯”,一旦 寫好,只需要一個(gè) make 命令,整個(gè)工程完全自動(dòng)編譯,極大的提高了軟件開發(fā)的效率。 g,產(chǎn)生符號(hào)調(diào)試工具 (GNU 的 gdb)所必要的符號(hào)資訊,要想對(duì)源代碼進(jìn)行調(diào)試,我們就必須加入這個(gè)選項(xiàng)。當(dāng)所有的目標(biāo)文件都生成之后, gcc 就調(diào)用 ld來完成最后 的關(guān)鍵性工作,這個(gè)階段就是連接。它是一套以 GPL 及 LGPL 許可證所發(fā)行的自由軟件,也是 GNU 計(jì)劃的關(guān)鍵部分,亦是自由的類 Unix 及蘋果電腦 Mac OS X 操作系統(tǒng) 的標(biāo)準(zhǔn)編譯器。 客戶端:主要用于查看在線人數(shù)、發(fā)送信息給特定用戶等功能, 總體設(shè)計(jì) 本聊天室系統(tǒng)采用了 c/s 形式。套接字可以被看做一 個(gè)專門的管道,但又不像管道,套接字對(duì)它們能容納的數(shù)量沒有限制,且 Linux 支持多種類型的套接字。 網(wǎng)絡(luò)編程可以做如下工作:網(wǎng)絡(luò)安全,通訊設(shè)備研發(fā),協(xié)議分析 , 網(wǎng)絡(luò)管理系統(tǒng) 等 。服務(wù)器設(shè)計(jì)與實(shí)現(xiàn)過程中 采用了多線程技術(shù),可以在單個(gè)程序當(dāng)中同時(shí)運(yùn)行多個(gè)不 同的線程 執(zhí)行不同的任務(wù)。 關(guān)鍵字: TCP/IP; linux; socket Design and Implementation of Inter chat rooms under Linux Linren Ming Of Computer Science, Communication Engineering 2021 Instructor: Yue Miao Abstract: This system uses a bination of C / S structure, between the client and the client and customer client and serverside through the TCP / IP protocolbased Socket sets of interfaces to deliver messages. Used in server design and implementation of multithreading technology, in a single program which is running a number of different threads to perform different tasks. Greatly enhanced the program on the use of server resources. To write and debug serverside program and client program under Linux, the connection between the client, server and munications. Two windows can be opened up on a standalone client and server, or the two hosts links, respectively, as the client and server. Overall, this design embedded C language for the development of language, the use of work sockets 2 socket connection is established and run multithreaded data exchange program GCC debugging can be used in standalone work. Keywords: TCP / IP。再有,且其內(nèi)核小、效率高、兼容性好和穩(wěn)定性強(qiáng)等優(yōu)點(diǎn)。 第二章 linux 網(wǎng)絡(luò)聊天室 設(shè)計(jì)思想 功能分析 本系統(tǒng)是想在 linux 系統(tǒng)下實(shí)現(xiàn)一個(gè)聊天室系統(tǒng),只要有服務(wù)器和客戶端??蛻魻顟B(tài)分為鏈接客戶和非連接客戶,我采用結(jié)構(gòu)體存儲(chǔ)鏈接客戶信息,以鏈表來記錄鏈接客戶。 命令 gcc 首先調(diào)用 cpp 進(jìn)行預(yù)處理,在預(yù)處理過程中, 對(duì)源代碼文件中的文件包含 (include)、預(yù)編譯語句 (如 宏 定義 define 等 )進(jìn)行分析。 c,只編譯,不連接成為可執(zhí)行文件,編譯器只是由輸入的 .c 等源代碼文件生成 .o 為后綴的目標(biāo)文件,通常用于編譯不包含主程序的子程序文件。對(duì)于 A類,預(yù)處理程序 cpp 在系統(tǒng)預(yù)設(shè)包含文件目錄 (如 /usr/include)中搜尋相應(yīng)的文件,而B類,預(yù)處理程序在目標(biāo)文件的文件夾內(nèi)搜索相應(yīng)文件。 mand 也就是 make 需要執(zhí)行的命令。在編譯時(shí)用 g 選項(xiàng)打開調(diào)試選項(xiàng)。 run 執(zhí)行當(dāng)前被調(diào)試的程序。 8 第 四 章 關(guān)鍵技術(shù)分析 linux 線程 間通信 線程是一個(gè)進(jìn)程內(nèi)的基本調(diào)度單位,也可以稱為輕量級(jí)進(jìn)程。許多函數(shù)是不可重入的,即同時(shí)不能運(yùn)行一個(gè)函數(shù)的多個(gè)拷貝(除非使用不同的數(shù)據(jù)段)。網(wǎng)絡(luò)應(yīng)用程序之間通過套接口來實(shí)現(xiàn)通信。 Linux 支持多種套接 口地址結(jié)構(gòu),在這兒只介紹一下 IPV4 套接口地址結(jié)構(gòu)和通用套接口地址結(jié)構(gòu)。 /* 端口號(hào) */ struct in_addr sin_addr。所以對(duì)與內(nèi)部字節(jié)表示順序和網(wǎng)絡(luò)字節(jié)順序不同的機(jī)器,一定要對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換(比如 IP 地址的表示,端口號(hào)的表示)。 (注: i_addr()返回的地方已經(jīng)是網(wǎng)絡(luò)字節(jié)順序了 ) 也可以把一個(gè) struct in_addr 代表的 IP地址打印出來(按照 數(shù)字 .數(shù)字 .數(shù)字 .數(shù)字的格式)如 printf(“%s”,i_ntoa() )。 功能:關(guān)閉套接字,執(zhí)行 close()之后,套接字將不再允許進(jìn)行讀操作和寫操作。 原型: int accept(int sockfd, void *addr,int *addrlen )?,F(xiàn)在我們介紹 socket 中的四次握手釋放連接的過程,請(qǐng)看下圖: 圖示過程為:某個(gè)應(yīng)用進(jìn)程首先調(diào)用 close 主動(dòng)關(guān)閉連接,這時(shí) TCP 發(fā)送一個(gè)FIN M;另一端接收到 FIN M 之后,執(zhí)行被動(dòng)關(guān)閉,對(duì)這個(gè) FIN 進(jìn)行確認(rèn)。 2 發(fā)送請(qǐng)求 (1) 獲取主機(jī)信息 (2) 初始化 socket 端口 (3)利用 connect 函數(shù)講自己的 IP 地址等信息發(fā)送到主機(jī),等待主機(jī)接受信息。 (3)在一臺(tái)計(jì)算機(jī)的終端先運(yùn)行服務(wù)器程序 (./multithread_tcp_server p 8080),再在客戶端的計(jì)算機(jī)終端上運(yùn)行客戶端程序 ()就會(huì)看到結(jié)果 ;運(yùn)行結(jié)果如 下所示。 char buffer_r[BUFF_SIZE]。readfds)。 if(delet!=NULL) head=delet。, BUFF_SIZE)。readfds)。 socklen_t addrlen = addr_size。 bzero(amp。 err_sys(server bind) } if (listen(sockfd, BACK_LOG) == 1)//closedlisten { shutdown(sockfd, SHUT_RD | SHUT_WR)。 pthread_attr_setdetachstate(amp。 22 bzero(amp。 } if(head==NULL) { next_p=creat_pointer()。 /***************Create a new slave thread**********************/ ret = pthread_create(amp。 fprintf(stderr, Master thread[%u] created a new thread failurefully\n, 23 pthread_self())。 struct sockaddr_in server_addr。 if(argc != 5) { fprintf(stderr, Usage:%s p server_port i server_ip\n, argv[0])。i39。 = AF_INET。
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1