linpop聊天软件代码

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

一client.c.........................................................................................................................................................................................2二server.c........................................................................................................................................................................................5三cl_sock.c......................................................................................................................................................................................7一client.c**********************************Client.c**Function:**createthechatwindow**功能:**创建聊天窗口**********************************/#includeclient.h#includegtk/gtk.h/*头文件*/intissucceed=-1;GtkTextBuffer*show_buffer,*input_buffer;/*定义全局变量*/voidget_ip(GtkWidget*,gpointer);voidquit_win(GtkWidget*,gpointer);/*声明函数*/intmain(intargc,char**argv){/*用GTK创建窗体控件变量*/GtkWidget*window;/*定义一个窗体变量*/GtkWidget*show_text,*input_text,*ip_text;/*定义三个文本框变量*/GtkWidget*ip_label,*space_label;/*定义两个标签变量*/GtkWidget*link_button,*send_button,*quit_button;/*定义三个按钮变量*/GtkWidget*hbox,*vbox;/*定义两个窗口变量*/GtkWidget*scrolled1,*scrolled2;/*创建两个滚动条*/gtk_init(&argc,&argv);/*呼叫函数启动GTK*/window=gtk_window_new(GTK_WINDOW_TOPLEVEL);/*创建一个新视窗*/gtk_window_set_title(GTK_WINDOW(window),FreeChat-Client);/*设置窗体标题*/gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);/*设置窗体位置*/gtk_window_set_default_size(GTK_WINDOW(window),430,320);/*设置窗体位置*/g_signal_connect(GTK_OBJECT(window),destroy,GTK_SIGNAL_FUNC(quit_win),NULL);/*按destroy“退出”按钮*/ip_label=gtk_label_new(IP:);/*设置IP标签为IP:*/space_label=gtk_label_new();/*设置标签*/link_button=gtk_button_new_with_label(连接);/*设置按钮*/send_button=gtk_button_new_with_label(发送);/*设置按钮*/quit_button=gtk_button_new_with_label(关闭);/*设置按钮*/ip_text=gtk_entry_new();/*设置文本框*/show_text=gtk_text_view_new();/*设置文本框*/input_text=gtk_text_view_new();/*设置文本框*/gtk_entry_set_max_length(GTK_ENTRY(ip_text),15);/*设置IP输入框最大长度*/show_buffer=gtk_text_view_get_buffer(GTK_TEXT_VIEW(show_text));/*获取显示文本框的缓冲区*/input_buffer=gtk_text_view_get_buffer(GTK_TEXT_VIEW(input_text));/*获取输入文本框的缓冲区*/gtk_text_view_set_editable(GTK_TEXT_VIEW(show_text),FALSE);/*设置显示文本框不可编辑*/scrolled1=gtk_scrolled_window_new(NULL,NULL);/*创建滚动窗口*/scrolled2=gtk_scrolled_window_new(NULL,NULL);/*创建滚动窗口*/gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled1),show_text);/*把文本框添加到滚动窗口*/gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled2),input_text);/*把文本框添加到滚动窗口*/gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled1),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);/*滚动条1显示方式,需要时显示*/gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled2),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);/*滚动条2显示方式,需要时显示*/hbox=gtk_hbox_new(FALSE,2);/*创建窗口*/vbox=gtk_vbox_new(FALSE,2);/*创建窗口*/g_signal_connect(GTK_OBJECT(quit_button),clicked,GTK_SIGNAL_FUNC(quit_win),NULL);/*关闭按钮调用退出函数*/g_signal_connect(GTK_OBJECT(link_button),clicked,GTK_SIGNAL_FUNC(get_ip),ip_text);/*点击“连接”,调用get_ip*/gtk_box_pack_start(GTK_BOX(hbox),ip_label,FALSE,FALSE,2);/*在hbox窗口上添加IP标签*/gtk_box_pack_start(GTK_BOX(hbox),ip_text,FALSE,FALSE,2);/*在hbox窗口上添加IP文本框*/gtk_box_pack_start(GTK_BOX(hbox),link_button,FALSE,FALSE,2);/*在hbox窗口上添加链接按钮*/gtk_box_pack_start(GTK_BOX(hbox),space_label,TRUE,TRUE,2);/*在hbox窗口上添加space标签*/gtk_box_pack_start(GTK_BOX(hbox),send_button,FALSE,FALSE,2);/*在hbox窗口上添加发送按钮*/gtk_box_pack_start(GTK_BOX(hbox),quit_button,FALSE,FALSE,2);/*在hbox窗口上添加退出按钮*/gtk_box_pack_start(GTK_BOX(vbox),scrolled1,TRUE,TRUE,2);/*在vbox窗口上添加滚动窗口1*/gtk_box_pack_start(GTK_BOX(vbox),scrolled2,FALSE,FALSE,2);/*在vbox窗口上添加滚动窗口2*/gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,2);/*在vbox窗口上添加窗口vbox*/gtk_container_add(GTK_CONTAINER(window),vbox);/*在窗体上添加vbox窗口*/gtk_signal_connect(GTK_OBJECT(send_button),clicked,GTK_SIGNAL_FUNC(send_text),NULL);/*点击发送按钮,然后调用send_text*/gtk_widget_show_all(window);/*显示窗体*/gtk_main();return0;}voidshow_local_text(constgchar*text)/*显示输入文本*/{GtkTextIterstart,end;/*定义缓冲区开始和结束位置变量*/gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(show_buffer),&start,&end);/*获得缓冲区开始和结束位置的Iter*/gtk_text_buffer_insert(GTK_TEXT_BUFFER(show_buffer),&end,我说:\n,8);/*插入文本到缓冲区*/gtk_text_buffer_insert(GTK_TEXT_BUFFER(show_buffer),&end,text,strlen(text));/*插入文本到缓冲区*/gtk_text_buffer_insert(GTK_TEXT_BUFFER(show_buffer),&end,\n,1);/*插入文本到缓冲区}voidclean_send_text()/*清除输入区的内容*/{GtkTextIterstart,end;/*定义缓冲区开始和结束位置变量*/gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(input_buffer),&start,&end);/*获得缓冲区开始和结束位置的Iter*/gtk_text_buffer_delete(GTK_TEXT_BUFFER(input_buffer),&start,&end);/*删除缓冲区的内容*/}voidsend_text()/*获得输入文本,并将其发送*/{GtkTextIterstart,end;/*定义缓冲区开始和结束位置变量*/gchar*text;/*定义文本指针*/if(issucceed==-1){/*没有创建一个套接字*/show_err(未建立链接...\n);}else/*创建成功,发送消息*/{text=(gchar*)malloc(MAXSIZE);/*为输入区的文本申请内存空间*/gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(input_buffer),&start,&end);/*获得缓冲区开始和结束位置的Iter*/text=gtk_text_buffer_get_text(GTK_TEXT_BUFFER(input_buffer),&start,&end,FALSE;/*获得文本框缓冲区的

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功