资源简介
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
相关资源
- linux多线程实现矩阵乘法
- 多线程sock5代理
- 基于UDP的局域网聊天系统.doc
- 基于Qt的多线程工具
- 睡觉的理发师问题Linux下运行
- QTcpServer实现多客户端连接
- 多线程下无同步和同步的简单对比
- TCP多线程服务器
- 可以查看多线程cpu占用率的工具
- Linux下多线程判断九宫格是否有效
- 消消乐自动求解
- libevent多线程
- 多线程字符串代码文件搜索器
- 多线程读者阅览室课程设计
- 多用户聊天系统UML课程设计
- 多线程自动化syn&udp flood攻击集成工具
- 实现一个数据单元,包括学号和姓名
- vc定时器和多线程的简单应用
- 面向对象与多线程综合实验报告
- 易语言多线程获取网络时间源码
- 基于多线程和SOCKET聊天室V05
- 使用多线程技术,模拟通过四个窗口
- 关于QT多线程子线程使用信号和槽
- linux上实现多进程和多线程实现同步互
- 在线聊天系统ssh整合开发struts spring
- 理发师问题的实现
- Qt界面多线程opencv调用摄像头
- 智慧大棚QT界面设计
- 多线程获取kinect2.0 视频并保存身体点
- Socket和多线程的聊天室
评论
共有 条评论