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

正文內(nèi)容

基于linux下的聊天程序的開發(fā)與設計-全文預覽

2024-12-10 15:28 上一頁面

下一頁面
  

【正文】 this file. */ ifdef HAVE_CONFIG_H include endif include include include int main (int argc, char *argv[]) { GtkWidget *window。 write(user_client[j].socketfd,write_msg,strlen(write_msg))。 j MAX_CLIENT。 token=strtok(NULL,)。amp。 sprintf(write_msg,all%s%s,user_client[i].id,token+(strlen(token)+1))。 j++) { if (user_client[j].state != 0) { write(user_client[j].socketfd,write_msg,strlen(write_msg))。 user_client[i].state = 0。 sprintf(write_msg,down%sover,user_client[i].id)。sockset)){ length=read(user_client[i].socketfd, read_msg, MAX_SIZE)。 20 }else{ for(i=0。 }else{ write(new_sockfd,regfail, 10)。 maxfd=max(maxfd, new_sockfd+1)。 printf(write_msg=%s\n,write_msg)。 printf(guod\n)。 printf(j=%d\n,j)。 } else { bzero(read_msg, MAX_SIZE)。client_address, amp。 select(maxfd, amp。 19 char *buf。 return s。 strcat(buf,)。 //strcat(buf,%s%s,user_client[i].id,user_client[i].name)。i++){ if(user_client[i].stateamp。 char buf[MAX_SIZE],write_msg[MAX_SIZE],*s。 printf(注冊 號 : %d \n,atoi(row[0]))。 if(row==0){ //printf(yun\n)。 return 1。 sprintf(sql, select max(id) from user)。 return 1。my_connection,sql)。%s39。 return 1。 mysql_init(amp。 //查詢結(jié)果集,結(jié)構(gòu)類型 MYSQL_FIELD *fd 。 printf(login:%s%s\n,id,pwd)。 } ( 4) 注冊函數(shù),返回自動生成的帳號 int reg(char *tome){ char *id, *name, *pwd,*token。iter)。iter,i, amp。 printf(列名 control=%s\n,control)。 for(i=0。// 得到 TREEVIEW的 model gtk_tree_model_get_iter_first(pmodel,amp。 char *pitem。 GtkTreeIter iter。 gdk_pixbuf_unref(pixbuf)。iter2, amp。 s = rand() % 5。 j MAX_CLIENT。 printf(%s\n, list[j].name)。iter2, amp。 s = rand() % 5。 j MAX_CLIENT。iter1, PIXBUF_COL, pixbuf, TEXT_COL, to_tree[i], 1)。 pixbuf = gdk_pixbuf_new_from_file(files[1], NULL)。 gdk_pixbuf_unref(pixbuf)。iter1, NULL)。 cellView = gtk_cell_view_new()。 GtkTreeIter iter1, iter2。 int online。 } else { printf(id=%s\n, list[i].id)。 i++) { if (strcmp(list[i].id, sid) == 0) { printf(i=%d\n, i)。 15 //gtk_widget_show_all(to_to)。 strcpy(sid, value + (strlen(value) + 2))。 printf(value=%s,to_id%s\n, value,to_id)。//點擊飛鴿 }else{ token = strtok(value, ( )。value, 1)。 if (gtk_tree_selection_get_selected(GTK_TREE_SELECTION(widget), amp。end)。start, amp。 } } void textviewclear (GtkWidget * text_view)//清空 textview { GtkTextBuffer *buffer。i++){ bzero(user_client[i].id,MAX_NAME)。 return(i)。 while ((user_client[i].state!=0)amp。iMAX_CLIENT。 } void set_address(fd_set *sockset, int sockfd){ int i。 fflush(stdout)。 setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, amp。server_address, sizeof(server_address))。 fflush(stdout)。上面已經(jīng)總體上列出聊天程序的基本技術(shù),接下來的工作就是利用這 些技術(shù)實現(xiàn)所需要的功能。 今天,在 GTK+的最新穩(wěn)定版本 —— 版上( 測試中),仍然在進行許多活動,同時, GIMP 無疑仍然是使用 GTK+的最著名的程序之一,不過現(xiàn)在它已經(jīng)不是惟一的使用 GTK+的程序了。 最初, GTK+ 是作為另一個著名的開放源碼項目 —— GNU Image Manipulation Program (GIMP)—— 的副產(chǎn)品而創(chuàng)建的。 9 SOCKET ListenSocket=socket(PF_INET,SOCK_STREAM,ppep_proto)。該表中有一個字段存放新創(chuàng)建的套接字的描述符,另一個字段存放套接字數(shù)據(jù)結(jié)構(gòu)的地址,因此根據(jù)套接字描述符就可以找到其對應的套接字數(shù)據(jù)結(jié)構(gòu)。 第一個參數(shù)指定應用程序使用的通信協(xié)議的協(xié)議族,對于 TCP/IP 協(xié)議族,該參數(shù)置 AF_INET; 第二個參數(shù)指定要創(chuàng)建的套接字類型,流套接字類型為 SOCK_STREAM、數(shù)據(jù)報套接字類型為 SOCK_DGRAM; 第三個參數(shù)指定應用程序所使用的通信協(xié)議。 Socket 是面向 C/ S 模型來設計的,網(wǎng)絡上的兩個程序 通過一個雙向的通訊連接實現(xiàn)數(shù)據(jù)的交換,這個雙向鏈路的一端稱為一個 Socket。對于一個網(wǎng)絡連接來說,套接字是平等的,并沒有差別,不因為在服務器端或在 客戶端而產(chǎn)生不同級別。應用程序通常通過 套接字 向網(wǎng)絡發(fā)出請求或者應答網(wǎng)絡請求。 ( 3) TCP 連接的建立 TCP 協(xié)議通過三個報文段完成連接的建立,這個過程稱為三次握手 (threeway handshake),過程如 圖 11 所示。因此, UDP 不被應用于那些使用虛電路的面向連接的服務, UDP 主要用于那些面向查詢 應答的服務,例如 NFS。應用程序 6 輪流將信息送回 TCP 層, TCP 層便將它們向下傳送到 IP 層,設備驅(qū)動程序和物理介質(zhì),最后到接收方。 ( 1) TCP 如果 IP 數(shù)據(jù)包中有已經(jīng)封好的 TCP 數(shù)據(jù)包,那么 IP 將把它們向 ‘ 上 ’ 傳送到TCP 層。 使用模擬電話調(diào)制解調(diào)器連接網(wǎng)絡的個人電腦通常是使用串行線路接口協(xié)議( SLIP)和點對點協(xié)議( P2P)。正是它們之間的 “ 無國籍的 ” 釋放了網(wǎng)絡路徑,才是每個人都可以連續(xù)不斷的使用網(wǎng)絡。即使來自同一文件的分包路由也有可能不同,但最后會在目的地匯合。高層為傳輸控制協(xié)議 (TCP,Transmission Control Protocol),它負責聚集信息或把文件拆分成更小的包。常用的 C 語言IDE(集成開發(fā)環(huán)境)有 Microsoft Visual C++, DevC++, Code::Blocks, Borland C++,Wat C++ , Borland C++ Builder, GNU DJGPP C++ , Lccwin32 C Compiler 5 , High C, Turbo C, CFree, wintc 等等 ?? TCP/IP 協(xié)議 : TCP/IP(傳輸控制協(xié)議 /網(wǎng)際協(xié)議)是互聯(lián)網(wǎng)中的 基本通信語言或協(xié)議。 C 語言對編寫需要硬件進行操作的場合,明顯優(yōu)于其它解釋型高級語言,有一些大型應用軟件也是用 C 語言編寫的。另外 C 語言也具有強大的圖形功能,支持多種顯示器和驅(qū)動器。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦阌谑褂?、維護以及調(diào)試。它把高級語言的基本結(jié)構(gòu)和語句與低級語言的實用性結(jié)合起來。 C 語言 : C 語言是一種成功的系統(tǒng)描述語言,用 C 語言開發(fā)的 UNIX 操作系統(tǒng)就是一個成功的范例 。 ( 2)功能模塊設計需求 這個軟件包含客戶端和服務器端。當 有錯誤發(fā)生時,我們應該有一個很好的機制來保障錯誤能夠及時地被排除。 因此我們將采用多線程方式的并發(fā)服務器來設計服務器端,這樣將能從很大程度上提高服務器的運行效率。 ( 5) 客戶端程序可以顯示在線好友 的功能 。 軟件功能需求: ( 1) 登錄功能。本文就是對于一個基于 Linux 下的聊天程序的設計與開發(fā)的闡述。隨之而來的問題也就出現(xiàn) —— 網(wǎng)絡交流工具。伴隨著計算機以及的普及,計算機網(wǎng)絡也漸漸被人們所熟悉?;?Linux 操作系統(tǒng)的網(wǎng)絡交流軟件還是很少。只有深入了解了使用者的要求,才能開發(fā)出一個令使用者滿意的聊天工具。 ( 4)服務器端可以保存用戶 信息 的功能 。 服務器模型一般分為循環(huán)服務器和并發(fā)服務器,循環(huán)服務器一次只能處理一個連接 ,也就是說同一時間只能由一個用戶連接到服務器進行消息處理,這種情況是不被允許的。 ( 3) 錯誤處理需求 所有的應用程序在運行過程中都會出現(xiàn)出錯的情況,這種錯誤可能來自于程序本 3 身的 BUG 也可能是用戶操作的失誤所造成的。 其他需求: ( 1)體系結(jié)構(gòu)模型需求 這個 是基于 tcp/ip 協(xié)議的 osi 的體系結(jié)構(gòu) 。 4 第二章
點擊復制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1