資源簡介
此資源是基于Linux 環境下的Socket通信編寫的代碼,里面融合了TCP/IP 通信,UDP通信,GTK,等知識,而且使用了I/O復用,在性能上有著自己的優勢。這個作品是我在課程設計的時候參考一個代碼做的,我在原作者的基礎上做了自己的改善。也謝謝原作者對于我的幫助!如果你想學習Linux C 可以下載,希望對你有用。幫助我寫在了client里面,你可以參考!
代碼片段和文件信息
/*---------------xc_qq.c------------
gcc?-Wall?-o?client_qq?client_qq.c?‘pkg-config?--cflags?--libs?gtk+-2.0?gthread-2.0‘?-export-dynamic?-lpthread
第一行是運行的命令,我將圖標放在了包里,你需要建立一個ico的文件夾,將圖標放進去,或者更改程序里面的路徑。
*/
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?“wrap.h“
#include?“mygtk.h“
#define?MAXLINE?800
static?char?*fengefu?=?“+“;
pthread_t?ntid;
static?char?list_name[MAXLINE][MAXLINE]?receive_msg_buf_name[MAXLINE][MAXLINE];
static?pthread_t?tid;
/*******************************/
static?char?msg_ip[MAXLINE]msg_port[MAXLINE];
/*********************************/
static?char?myname[MAXLINE]?myip[MAXLINE]?msg_buf[MAXLINE]?myport[MAXLINE];
/**************文件傳輸相關變量開始*************/
static?char?file_from_name[MAXLINE]?filename[MAXLINE]?receive_ip[MAXLINE]?receive_port[MAXLINE]?disrecv_from_name[MAXLINE];
int?new_file?=?-1?get_ip_statue?=?-1;
/**************文件傳輸相關變量結束*************/
int?group_send=-1;
char?group_message[MAXLINE];
int?err;
static?int?retvalue?=?0?c_icon?=?-1;
//static?int?ifshow=-1;
char?buf[MAXLINE];
int?inet_pton(int?af?const?char?*src?void?*dst);
static?int?sockfd?n;
static?int?connect_ser(char?server_ip[]?int?server_port);
static?void?show_login();
void?init_list_name()
{
int?i?=?0;
for?(i?=?0;?i? bzero(list_name[i]?MAXLINE);
strcpy(list_name[i]?“null“);
}
}
void?init_receive_msg_buf_name()
{
int?i?=?0;
for?(i?=?0;?i? bzero(receive_msg_buf_name[i]?MAXLINE);
strcpy(receive_msg_buf_name[i]?“null“);
}
}
/*?列表代碼開始?*/
enum?{
COLUMN?=?0
NUM_COLS
};
GtkWidget?*view;
GtkWidget?*label_myname;
char?count_online[100];
void?on_changed(GtkWidget?*?widget?gpointer?statusbar)
{
GtkTreeIter?iter;
GtkTreeModel?*model;
char?*value;
if?(gtk_tree_selection_get_selected(GTK_TREE_SELECTION(widget)?&model?&iter))?{
gtk_tree_model_get(model?&iter?COLUMN?&value?-1);
gtk_statusbar_push(GTK_STATUSBAR(statusbar)?gtk_statusbar_get_context_id(GTK_STATUSBAR(statusbar)?value)?value);
char?win_name[MAXLINE];
sprintf(win_name?“%s+正在和+%s+聊天\n“?myname?value);
int?i?=?0;
for?(i?=?0;?i? if?(strcmp(receive_msg_buf_name[i]?value)?==?0)?{
return;
}
}
if?(strcmp(value?count_online)?!=?0?&&?strcmp(value?“離線好友(0)“)?!=?0?&&?strcmp(value?“獲取列表失?。≌堉匦碌卿?!“)?!=?0)?{
for?(i?=?0;?i? if?(strcmp(receive_msg_buf_name[i]?“null“)==?0)?{
strcpy(receive_msg_buf_name[i]?value);
break;
}
}
??????????//pthread_t?show_chat_tid;
??????????//void?*win_title?=?(void?*)win_name; //類型轉換
??????? //void?*sockfe?=?(void?*)sockfd; //類型轉換
//pthread_create(&ntid?NULL?thr_fn?sockfe);
?????????//pthread_create(&show_chat_tid?NULL?show_chat_window_thr?NULL);
show_chat_window(win_name);
}
g_free(value);
}
}
static?void?remove_all()
{
GtkTreeStore?*treestore;
treesto
- 上一篇:小型超市管理系統(C++)
- 下一篇:ADC0809與80C52單片機
評論
共有 條評論