文档详情

linux网络编程服务端代码.doc

发布:2017-12-08约3.44千字共5页下载文档
文本预览下载声明
#include gtk/gtk.h//值得珍惜 #includestdio.h #includestdlib.h #includestring.h #includesys/types.h #includesys/socket.h #includenetinet/in.h #includeunistd.h #includearpa/inet.h #includepthread.h #include libintl.h #include locale.h gint sockfd,connfd; struct sockaddr_in server; struct sockaddr_in client; socklen_t addrlen; gchar buf[1024]; gchar get_buf[1024]; gboolean isconnected=FALSE; static GtkWidget *text; static GtkTextBuffer *buffer; //static GtkWidget *message_entry; GtkWindow *window1; GtkEntry *entry1; GtkTextView *textview1; //void on_textview1_paste_clipboard(); //void on_entry1_insert_text(); #define w_(builder,type,name) name=GTK_##type(gtk_builder_get_object(builder,#name)) void server_get_widgets(GtkBuilder *gb) { w_(gb,WINDOW,window1); w_(gb,ENTRY,entry1); w_(gb,TEXT_VIEW,textview1); } void on_button1_clicked(GtkWidget *button,gpointer data) { on_send(); } void on_button2_clicked(GtkWidget *button,gpointer data) { gtk_entry_set_text(GTK_ENTRY(entry1),gettext(8)); } void on_window1_destroy() { on_delete_event(); } gboolean do_connect(void) { GtkTextIter iter; if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1) { perror(socket()); return -1; } server.sin_family=AF_INET; server.sin_port=htons(1234); server.sin_addr.s_addr=inet_addr(127.0.0.1); int bind_id=bind(sockfd,(struct sockaddr*)server,sizeof(server)); if(bind_id==-1) { perror(bind()); return -1; } int listen_id; { if((listen_id=listen(sockfd,1))==-1) { perror(listen()); return -1; } } addrlen=sizeof(client); connfd=accept(sockfd,(struct sockaddr*)client,addrlen); if(connfd==-1) { perror(accept()); return -1; } else { gtk_text_buffer_get_end_iter(buffer,iter); gtk_text_buffer_insert(buffer,iter,connect succes\n,-1); isconnected=TRUE; return TRUE; } } void on_delete_event(GtkWidget *widget,GdkEvent *event,gpointer data) { close(sockfd); gtk_main_quit(); } void on_send(GtkButton* button,gpointer data) { const char* message; GtkTextIter it
显示全部
相似文档