资源简介
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
相关资源
- 编写简单的RMI程序 多线程web 服务器
- QT局域网聊天系统(基于QT5.修改过)
- 多线程生产者消费者模式
- 多线程实例:桌面智能弹球小游戏
- WPF多线程演示
- 易语言:多线程传多变量的最稳定方
- 排队买票多线程问题
- 嵌入式局域网聊天系统客户端
- 强大的完善的 活动抽奖系统适合各单
- 十字路口红绿灯交通情况模拟
- Qt 多线程连接数据库——数据库
- 易语言多线程端口扫描源码
- POSIX多线程程序设计中文版源码
- 易语言md5定向爆破源码
- 多线程扫描工具
- Delphi.High.Performance.Applications.Concurren
- Qt5的多线程小程序,实现按钮开关线
- 控制台串口通信程序
- POSIX多线程程序设计中文版pdf
- 使用多线程及图像分块实现图像处理
- 图像处理中使用多线程及图像分块实
- p2p文件共享系统 含代码和文档
- 聊天系统计算机网络
- 武汉理工大学面向对象与多线程综合
- 多线程编程指南[中文完整翻译版] –
- QT多线程实现图片以缩略图形式显示
- qt利用线程实现多任务
- 基于QT的局域网聊天系统附文档
- 仿腾讯QQ的一个及时聊天系统
- 基于socket的多线程QQ聊天系统(代码
评论
共有 条评论