• 大小: 162KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-05
  • 语言: 其他
  • 标签: 聊天系统  多线程  

资源简介

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课程设计\源代码\database.h

     文件        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


评论

共有 条评论