資源簡介
Linux課程設計多線程聊天,有圖形界面,源碼,報告都在里面,經測試正確,可用

代碼片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include“message.h“
#include“gettime.h“
sem_t?bin_sem;
int?client_sockfd;
const?gchar?*username;
GtkWidget?*logionWindow;
GtkWidget?*res_text_view;
GtkTextBuffer?*view_buffer;
void?accmsg(int?*fd)????????????????????????????//recive?information?from?server
{
sem_wait(&bin_sem);
char?buf[50];
char?*text; //storage?information
int?clientfd?=?*fdrecvbytes;
GtkTextBuffer?*buffer;
GtkTextIter?startend;
text=(char?*)malloc(50);
while(1)
{
memset(buf‘\0‘sizeof(buf));
memset(text‘\0‘sizeof(text));
if((recvbytes=recv(clientfdbufsizeof(buf)0))<=0)
{
perror(“recv“);
close(clientfd); //close?socked
raise(SIGSTOP);
exit(1);
}?
strcpy(textbuf);
buffer=gtk_text_view_get_buffer(GTK_TEXT_VIEW(res_text_view));
gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(buffer)&start&end);
gtk_text_buffer_insert(GTK_TEXT_BUFFER(buffer)&starttextstrlen(text));
}
}
void?Clear_Local_message(gpointer?*data)
{
GtkTextIter?startend;
GtkTextBuffer?*send_buffer;
send_buffer=gtk_text_view_get_buffer(GTK_TEXT_VIEW(data));
gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(send_buffer)&start&end);/*獲得緩沖區開始和結束位置的Iter*/
gtk_text_buffer_delete(GTK_TEXT_BUFFER(send_buffer)&start&end);/*插入到緩沖區*/
}
void?Put_Local_message(const?gchar?*text)
{
GtkTextBuffer?*rcv_buffer;
GtkTextIter?startend;
char?*curtime;
curtime?=?(char?*)malloc(TIMELENGTH);???//give?space
rcv_buffer=gtk_text_view_get_buffer(GTK_TEXT_VIEW(res_text_view));
gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(rcv_buffer)&start&end);/*獲得緩沖區開始和結束位置的Iter*/
get_cur_time(curtime);
gtk_text_buffer_insert(GTK_TEXT_BUFFER(rcv_buffer)&endcurtimestrlen(curtime));/*插入文本到緩沖區*/
gtk_text_buffer_insert(GTK_TEXT_BUFFER(rcv_buffer)&end“?“1);/*插入文本到緩沖區*/
gtk_text_buffer_insert(GTK_TEXT_BUFFER(rcv_buffer)&end“我說:\n“8);/*插入文本到緩沖區*/
gtk_text_buffer_insert(GTK_TEXT_BUFFER(rcv_buffer)&endtextstrlen(text));/*插入文本到緩沖區*/
gtk_text_buffer_insert(GTK_TEXT_BUFFER(rcv_buffer)&end“\n“1);/*插入文本到緩沖區*/
}
void?Show_Err(char?*err)
{
GtkTextIter?startend;
GtkTextBuffer?*rcv_buffer;
rcv_buffer=gtk_text_view_get_buffer(GTK_TEXT_VIEW(res_text_view));
gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(rcv_buffer)&start&end);
gtk_text_buffer_insert(GTK_TEXT_BUFFER(rcv_buffer)&enderrstrlen(err));
}
void?sendButton_event(GtkWidget?*widgetgpointer?*data)
{
GtkTextBuffer?*send_buffer;
int?sendbytes;
GtkTextIter?startend;
char?*t;
PMessage?msg;
t=(char?*)malloc(TXTNUM);
msg=(Message?*)malloc(sizeof(Message));
memset(msg‘\0‘sizeof(Message));
memset(t‘\0‘sizeof(t));
send_buffer=gtk_text_view_get_buffer(GTK_TEXT_VIEW(data));
gtk_text_buffer_get_bounds(GTK_TEXT_BUF
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????270848??2013-08-01?11:20??Linux課程設計\Linux課程設計報告.doc
?????文件??????17880??2013-07-05?22:52??Linux課程設計\源代碼\client.c
?????文件???????2388??2013-06-30?11:10??Linux課程設計\源代碼\clientlist.h
?????文件???????2619??2013-07-05?13:55??Linux課程設計\源代碼\databa
?????文件????????921??2013-06-30?10:32??Linux課程設計\源代碼\gettime.h
?????文件???????2747??2013-07-01?15:39??Linux課程設計\源代碼\message.h
?????文件??????12524??2013-07-05?15:35??Linux課程設計\源代碼\server.c
?????目錄??????????0??2013-07-06?11:00??Linux課程設計\源代碼
?????目錄??????????0??2013-08-01?11:21??Linux課程設計
-----------?---------??----------?-----??----
???????????????309927????????????????????9
評論
共有 條評論