linpop聊天软件代码
时间:2025-04-05
时间:2025-04-05
linpop聊天软件代码,有注释
一 client.c ......................................................................................................................................................................................... 2
二 server.c ........................................................................................................................................................................................ 5
三 cl_sock.c ...................................................................................................................................................................................... 7
linpop聊天软件代码,有注释
一 client.c
*********************************
* Client.c *
* Function: *
* create the chat window *
*功能: *
*创建聊天窗口 *
*********************************/
#include "client.h"
#include <gtk/gtk.h>/*头文件*/
int issucceed=-1;
GtkTextBuffer *show_buffer,*input_buffer;/*定义全局变量*/
void get_ip(GtkWidget *,gpointer);
void quit_win(GtkWidget *,gpointer);/*声明函数*/
int main(int argc,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),"Free Chat -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显示方式,需要时显示*/
linpop聊天软件代码,有注释
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();
return 0;
}
void show_local_text(const gchar* text)/* 显示输入文本*/
{
GtkTextIter start,end;/*定义缓冲区开始和结束位置变量*/
gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(show_buffer),&start,&end);/*获得缓冲区开始和结束位置的Iter*/ gtk_text_buffer_insert(GTK_TEXT_BUF …… 此处隐藏:7721字,全部文档内容请下载后查看。喜欢就下载吧 ……
下一篇:毛笔字横撇、撇点教案