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

正文內(nèi)容

基于linux下的聊天程序的開發(fā)與設(shè)計(jì)(編輯修改稿)

2024-12-18 15:28 本頁面
 

【文章內(nèi)容簡介】 HP, Guile,Perl, Python, TOM, Ada95, Objective C, Free Pascal, and Eiffel。 本章總結(jié): 技術(shù)是開發(fā)的基礎(chǔ),只有熟練掌握了這些技術(shù),才能高效、快速的完成所設(shè)計(jì)的軟件。上面已經(jīng)總體上列出聊天程序的基本技術(shù),接下來的工作就是利用這 些技術(shù)實(shí)現(xiàn)所需要的功能。 10 第三章 軟件詳細(xì)設(shè)計(jì)及代碼實(shí)現(xiàn) 我們所看到的軟件是這個(gè)軟件的圖形界面,這些界面要容易被大眾所接受,而實(shí)現(xiàn)軟件的功能就是代碼了。 軟件界 面設(shè)計(jì): ( 1)服務(wù)器端 如圖 31 圖 31 服務(wù)器端 ( 2)登錄界面 如圖 32 11 圖 32 登錄界面 ( 3)注冊界面 如圖 33 圖 33 注冊界面 ( 4)注冊成功 如圖 34 圖 34 注冊成功 ( 5)客戶端窗口 如圖 35 12 圖 35 客戶端 ( 6)用戶 2 對(duì)用戶 3 聊天 如圖 36 圖 36 聊天示意圖 ( 7)系統(tǒng)發(fā)布消 息 如圖 37 13 圖 37 系統(tǒng)發(fā)布消息 軟件主要代碼實(shí)現(xiàn): int initial_server (char *ip, int server_listen_port) { int sockfd。 if ((sockfd=socket(AF_INET, SOCK_STREAM,0))0) { printf(服務(wù)器不能創(chuàng)建套接字 !\n)。 fflush(stdout)。 return(0)。 } printf(sockfd is %d\n,sockfd)。 bzero((char*)amp。server_address, sizeof(server_address))。 =AF_INET。 =i_addr(ip)。 =htons(server_listen_port)。 setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, amp。flag, len)。 if(bind(sockfd,(structsockaddr*)amp。server_address,sizeof(server_address))0){ printf(服務(wù)器不能綁定本地 IP 地址 !\n)。 fflush(stdout)。 return(0)。 } printf(服務(wù)器端口號(hào)為: %d\n,server_listen_port)。 return(sockfd)。 } void set_address(fd_set *sockset, int sockfd){ int i。 FD_ZERO(sockset)。 FD_SET(sockfd, sockset)。 14 for(i=0。iMAX_CLIENT。i++){ if(user_client[i].socketfd!=0){ FD_SET( user_client[i].socketfd,sockset)。 } } } int max(int a, int b) { return a b ? a : b。 } int user_free() { int i=0。 while ((user_client[i].state!=0)amp。amp。(iMAX_CLIENT)) i++。 if (i==MAX_CLIENT) return(1)。 return(i)。 } void init_user_client (void){ int i。 for(i=0。iMAX_CLIENT。i++){ bzero(user_client[i].id,MAX_NAME)。 bzero(user_client[i].name,MAX_NAME)。 user_client[i].socketfd=0。 user_client[i].state=0。 } } void textviewclear (GtkWidget * text_view)//清空 textview { GtkTextBuffer *buffer。 GtkTextIter start, end。 buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view))。 gtk_text_buffer_get_bounds (buffer, amp。start, amp。end)。 gtk_text_buffer_delete (buffer, amp。start, amp。end)。 } ( 1) treeiew 信號(hào)處理函數(shù) gboolean selection_changed(GtkWidget * widget, gpointer data) { GtkTreeIter iter。 GtkTreeModel *model。 char *value,*token。 if (gtk_tree_selection_get_selected(GTK_TREE_SELECTION(widget), amp。model, amp。iter)) { gtk_tree_model_get(model, amp。iter, 0, amp。value, 1)。 show_foot(label1_to,value)。 strcpy(to_man,value)。 if(strcmp(value,飛鴿傳書 )==0){ sprintf(to_id,all)。//點(diǎn)擊飛鴿 }else{ token = strtok(value, ( )。 token = strtok(NULL, ))。 //bzero(del_m,MAX_ROW)。 sprintf(to_id,%s,token)。 printf(value=%s,to_id%s\n, value,to_id)。 } /*if (strcmp(value, 在線好友 ) != 0 amp。amp。 strcmp(value, 離線好友 ) != 0) { strtok(value, )。 strcpy(sid, value + (strlen(value) + 2))。 printf(%s\n, sid)。 //GtkWidget *to_to。 //to_to=create_toto(1)。 15 //gtk_widget_show_all(to_to)。 int i。 for (i = 0。 i MAX_CLIENT。 i++) { if (strcmp(list[i].id, sid) == 0) { printf(i=%d\n, i)。 printf(id=%s\n, list[i].id)。 if (list[i].state == 0) { //g_thread_create(G_THREAD_FUNC(dialog),NULL,FALSE, NULL) 。 break。 } else { printf(id=%s\n, list[i].id)。 if (list[i].p == 0) { g_thread_create(G_THREAD_FUNC(func_action), (void*)i, FALSE, NULL)。 } break。 } } } }*/ } } ( 2) 顯示好友列表 GtkTreeModel *createmodel() { int unline。 int online。 const gchar *files[] = { , , }。 GtkWidget *cellView。 GdkPixbuf *pixbuf。 GtkTreeIter iter1, iter2。 gint i, j, s, k = 0。 char to_tree[MAX_CLIENT][MAX_NAME],fly[MAX_NAME]。 store = gtk_tree_store_new(2, GDK_TYPE_PIXBUF, G_TYPE_STRING)。 cellView = gtk_cell_view_new()。 sprintf(fly,飛鴿傳書 \0)。 pixbuf = gdk_pixbuf_new_from_file(files[1], NULL)。 gtk_tree_store_append(store, amp。iter1, NULL)。 gtk_tree_store_set(store, amp。iter1, PIXBUF_COL, pixbuf, TEXT_COL, fly, 1)。 printf(tree_cont=%s\n,fly)。 gdk_pixbuf_unref(pixbuf)。 for (i = 0。 i MAX_CLIENT。 i++) { if(strlen(user_client[i].id)!=0){ //my_friend[i].f_name //my_friend[i].f_id sprintf(to_tree[i],%s( %s ),user_client[i].name,user_client[i].id)。 pixbuf = gdk_pixbuf_new_from_file(files[1], NULL)。 gtk_tree_store_append(store, amp。iter1, NULL)。 gtk_tree_store_set(store, amp。iter1, PIXBUF_COL, pixbuf, TEXT_COL, to_tree[i], 1)。 printf(tree_cont=%s\n,to_tree[i])。 gdk_pixbuf_unref(pixbuf)。 } } /*list[messcount] if (i == 0) { for (j = 0。 j MAX_CLIENT。 j++) { if (list[j].state == 1) { 16 bzero(tables, MAX_NAME)。 sprintf(tables, %s%s, list[j].name, list[j].id)。 printf(%s\n, list[j].name)。 s = rand() % 5。 pixbuf = gdk_pixbuf_new_from_file(file[i], NULL)。 //pixbuf=gtk_widget_render_icon(cellView,stocks[s],GTK_ICON_SIZE_BUTTON, NULL)。 gtk_tree_store_append(store, amp。iter2, amp。iter1)。 gtk_tree_store_s
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1