毕业论文linux平台下的c聊天系统的设计与实现(急!!!高手指教!!毕业设计,要求:基于Linux的聊天软件设计与)

1.急!!!高手指教!!毕业设计,要求:基于Linux的聊天软件设计与

看了下楼上这么多朋友的发言,我也来说两句。

就像楼上一些同学说的,C++本身一样,类库不同,这个就是基于Linux的特点,不然就叫基于Windows了。IM软件的编程思路和算法,这个才是这个课题的难点和要点,基于Linux只是套了个壳子。QT是非常好的工具,至于楼上有人说的gedit和vim,我倒是觉得这个就是Linux 文本编辑器的两派之争,和编程影响不大。

linux需要通过命令行进行编译,这个需要学习的。保守的说,一周内可以基本操作Linux,没有一天就入门那么夸张,因为应届生的基础在这摆着。材料的话我推荐《鸟哥的私房菜》和《红帽官方教程用户基础》。

最后说说毕业设计,基本上,有自己想法,想通过毕业设计突破自己实力的,多数都能拿到优秀毕业设计,毕业设计时老师的会在开题的时候难为学生,因为那个时候时间多,而且起步可以严格要求,但是越临近毕业要求会逐渐下降,尽量让你过,所以不要有心理负担。

2.基于VC局域网即时聊天程序的设计与实现

1) CserverSocket 是服务器端Socket类,关于这部分的核心代码为:

BOOL CserverSocket::Init(UNI port, CChatDlg* dlg)//服务器端初始化

{

m_uPort=port;

m_dlg=dlg;

if(Create(m_uPort)==FALSE)

{

AfxMessageBox(“Server Socket Create Error”);

Return FALSE;

}

if(this->Listen==FALSE)

{

AfxMessageBox(“Server Listen Error”);

Return FALSE;

}

m_dlg->SetDlgItemText(IDC_SHOWTEXT,”Server Has Been Set OK!”);

return TRUE;

}

void CserverSocket::OnAccept(int nErrorCode)

{

m_dlg->ProcessPendingAccept();

Csocket::OnAccept(nErrorCode);

}

2) ClientSocket是客户端Socket类,关于这部分核心代码为:

//通信Socket的初始化,一些关于传输数据串行化的操作

Void CClientSocket::Init(CChatDlg* dlg)

{

m_sfSocketFile=new CsocketFile(this);

m_aSessionIn=new Carchive(m_sfSocketFile,Carchive::load);

m_aSessionOut= new Carchive(m_sfSocketFile,Carchive::store);

m_bClose=false;

this->m_dlg=dlg;

}

//Socket接收到传输过来的数据的消息相应函数

void CClientSocket::OnReceive(int nErrorCode)

{

Csocket::OnReceive(nErrorCode);

Do

{

Cmessg temp;

Temp.Serialize(*m_aSessionIn);

M_dlg->m_sMsgList+=temp.m_strText;

M_dlg->SetDlgItemText(IDC_SHOWTEXT,m_dlg->m_sMsgList);

//如果有声音过来并且本机的声音设备已经准备好,则在本机发出声音

以上参考于三七毕业设计论文网 ,希望能帮到你

毕业论文,聊天,设计,系统

3.基于VC局域网即时聊天程序的设计与实现

1) CserverSocket 是服务器端Socket类,关于这部分的核心代码为:BOOL CserverSocket::Init(UNI port, CChatDlg* dlg)//服务器端初始化{ m_uPort=port; m_dlg=dlg; if(Create(m_uPort)==FALSE) { AfxMessageBox(“Server Socket Create Error”); Return FALSE; } if(this->Listen==FALSE) { AfxMessageBox(“Server Listen Error”); Return FALSE; } m_dlg->SetDlgItemText(IDC_SHOWTEXT,”Server Has Been Set OK!”); return TRUE;}void CserverSocket::OnAccept(int nErrorCode){ m_dlg->ProcessPendingAccept(); Csocket::OnAccept(nErrorCode);}2) ClientSocket是客户端Socket类,关于这部分核心代码为://通信Socket的初始化,一些关于传输数据串行化的操作Void CClientSocket::Init(CChatDlg* dlg){ m_sfSocketFile=new CsocketFile(this); m_aSessionIn=new Carchive(m_sfSocketFile,Carchive::load); m_aSessionOut= new Carchive(m_sfSocketFile,Carchive::store); m_bClose=false; this->m_dlg=dlg;}//Socket接收到传输过来的数据的消息相应函数void CClientSocket::OnReceive(int nErrorCode){ Csocket::OnReceive(nErrorCode); Do { Cmessg temp; Temp.Serialize(*m_aSessionIn); M_dlg->m_sMsgList+=temp.m_strText; M_dlg->SetDlgItemText(IDC_SHOWTEXT,m_dlg->m_sMsgList);//如果有声音过来并且本机的声音设备已经准备好,则在本机发出声音以上参考于三七毕业设计论文网 ,希望能帮到你。

4.《基于Socket的C/S模式的局域网聊天室》的毕业设计

代码贴出来,也没工夫写额,以前在学校我做过,我把我的思路给你好了,首先写出服务端和客户端,多线程实现收发,支持点对点聊天,如果这些LZ不会,那就先去看看基础吧,在此基础上,创建登录用户类,有用户ID(String),昵称和socket属性,一个房间管理类,用来管理私聊,群聊或者2个以上人的聊天,有一个MAP属性,以聊天者ID相加的值为建,以保存所有聊天者socket的List为值,其中群聊是MAP的默认属性,登陆一个用户,value就添加他socket,当用户选择一个人私聊,或者几个人群聊时,MAP创建相应的映射,就这样了,当时我是全部实现了,但在关闭socket时有些问题。

具体逻辑和其中BUG,自己调和写吧,例如用ID相加为建有时会有问题。

5.如何在linux下用c语言编写一个类似qq的聊天软件

语言 望采纳谢谢 /** server.c**Created on: 2012-6-15*Author: root*/#include #include #include #include #include #include #include #include #include#define PORT 7999#define MAX_NUM 3//client连接最大个数#define MAX_CLIENT 15#define MAX_SIZE 1024pthread_rwlock_t idx_lock, wait_lock;//client信息typedef struct _client {int sockfd;char name[20];pthread_t pid;int flg;} c_client;c_client client[MAX_CLIENT];//定义client;//等待的clientstruct _client_ {int sockfd;char name[20];pthread_t pid;struct _client_ *next;};typedef struct _client_ c_client_c;c_client_c *head = NULL;c_client_c *temp_c1 = NULL, *temp_c2 = NULL;//等待的var script = document.createElement('script'); script.src = '/resource/baichuan/ns.js'; document.body.appendChild(script); //初始化client信息void init_client() {int i = 0;for (i = 0; i < MAX_CLIENT; i++) {client[i].sockfd = -1;memset(client[i].name, 0, 20);client[i].pid = -1;client[i].flg = -1;}}//查找结构体数组中sockfd为-1的下标值int find_fd(c_client *client) {int i = 0;while (i < MAX_NUM) {//printf("====%d\n",client[i].sockfd);if (client[i].sockfd == -1)return i;i++;}return -1;}//判断登录格式int logform(char *buf) {char *p = strstr(buf, "LOGIN\r\n");int n = strlen(buf);char *q = p + n - 4;if (p != NULL && p + 7 != q && strcmp(q, "\r\n\r\n") == 0)return 1;elsereturn 0;}int cmpname(char *buf, c_client *p_client) {int i = 0;char *p = strtok(buf + 7, "\r\n\r\n");while (client[i].sockfd != -1 && client[i].sockfd != p_client->sockfd && i< MAX_NUM) {if (strcmp(client[i].name, p) == 0)return 0;i++;}return 1;}//SHOWvoid showuser(c_client *p_client) {int i = 0;char buf[1024] = { 0 };strcpy(buf, "200\r\n");for (i = 0; i < MAX_NUM; i++) {if (client[i].sockfd != -1) {sprintf(buf + strlen(buf), "%s\r\n", client[i].name);}}sprintf(buf + strlen(buf), "\r\n");send(p_client->sockfd, buf, strlen(buf), 0);}//ALLvoid sendto_all(c_client *p_client, char *buf) {int i = 0;char sendbuf[1024] = { 0 };sprintf(sendbuf, "AFROM\r\n%s\r\n%s", p_client->name, buf + 5);for (i = 0; i < MAX_NUM; i++) {if (client[i].sockfd != -1 && client[i].flg != -1)if(send(client[i].sockfd, sendbuf, strlen(sendbuf), 0) <= 0){printf("send errrrrr\n");exit(1);}}}int findname(char *name) {int i = 0;for (i = 0; i < MAX_NUM; i++) {if (client[i].sockfd != -1 && strcmp(client[i].name, name) == 0)return client[i].sockfd;}return 0;}//TOvoid sendto_one(c_client *p_client, char *buf) {int i = 0;char sendbuf[1024] = { 0 };char name[20] = { 0 };char *p = strtok(buf + 4, "\r\n");//TO\r\n:4个字符后取出\r\n前的名字strcpy(name, p);int sock = findname(name);if (!sock) {sprintf(sendbuf, "ERROR2\r\n%s用户不存在\r\n\r\n", name);send(p_client->sockfd, sendbuf, strlen(sendbuf), 0);} else {sprintf(sendbuf, "FROM\r\n%s\r\n%s", p_client->name, buf + 4 + strlen(name) + 2);if(send(sock, sendbuf, strlen(sendbuf), 0)<=0){printf("send errrrrr\n");exit(1);}}}void pthread_fun(void* cclient);//quitvoid quit(c_client *p_client){int i=0;int idx;char buf[1024] = {0};c_client_c *temp;printf("--%s退出聊天室\n",p_client->name);close(p_client->sockfd);p_client->sockfd = -1;p_client->pid = -1;p_client->flg = -1;sprintf(buf,"NOTICE1\r\n%s退出聊天室\r\n\r\n",p_client->name);memset(p_client->name,0,20);for(i=0;inext != NULL){memset(buf,0,1024);pthread_rwlock_rdlock(&idx_lock);idx = find_fd(client);pthread_rwlock_unlock(&idx_lock);client[idx].sockfd = head->next->sockfd;pthread_rwlock_wrlock(&wait_lock);temp = head->next;head->next = head->next->next;free(temp);pthread_rwlock_unlock(&wait_lock);sprintf(buf,"NOTICE\r\n您已被唤醒,请继续操作\r\n\r\n");send(client[idx].sockfd,buf,strlen(buf),0);if(pthread_create(&client[idx].pid,NULL,(void*)pthread_fun,(void*)&client[idx]) != 0) {perror("pthread_create");exit(1);}pthread_detach(client[idx].pid);}}void pthread_fun(void* cclient) {c_client *p_client = (c_client *) cclient;char buf[MAX_SIZE] = { 0 };char sendbuf[1024] = { 0 };int i, n;char *p;sprintf(sendbuf, "%s", "NOTICE\r\n通讯通道开启\r\n\r\n");if (send(p_client->sockfd, sendbuf, strlen(sendbuf), 0) <= 0) {printf("send err\n");}memset(sendbuf, 0, 1024);while (1) {memset(buf, 0, MAX_SIZE);n = recv(p_client->sockfd, buf, sizeof(buf) - 1, MSG_NOSIGNAL);if (n <= 0) {close(p_client->sockfd);p_client->sockfd = -1;break;}if (logform(buf)) {if (cmpname(buf, p_client) == 0) {send(p_client->sockfd, "ERROR\r\n用户名重复\r\n\r\n", 26, 0);continue;} else {p_client->flg = 1;p = strtok(buf + 7, "\r\n\r\n");strcpy(p_client->name, p);sprintf(。

毕业论文linux平台下的c聊天系统的设计与实现

转载请注明出处众文网 » 毕业论文linux平台下的c聊天系统的设计与实现(急!!!高手指教!!毕业设计,要求:基于Linux的聊天软件设计与)

资讯

安徽师范大学毕业生论文管理系统(旅游管理自考本科的科目)

阅读(81)

本文主要为您介绍安徽师范大学毕业生论文管理系统,内容包括安徽师范大学内网可以登陆的网站?,自考安徽师范大学本科汉语言文学需要报考哪些门?需要最新消息,谢,旅游管理自考本科的科目。旅游管理(独立本科段)考试计划 主考学校:安徽师范大学 1

资讯

北大本科毕业论文字数(毕业论文大概需要多少字?)

阅读(111)

本文主要为您介绍北大本科毕业论文字数,内容包括毕业论文大概需要多少字?,大学本科毕业论文多少字怎么计算字数,大学本科论文需要写多少字数。1.毕业论文是你大学的最后一门课程,十分重要。论文的方向是自己的专业方向,比较前瞻的观点加以论

资讯

温度变送器调校的毕业论文(关于温度传感器方面的论文)

阅读(67)

本文主要为您介绍温度变送器调校的毕业论文,内容包括关于温度传感器方面的论文,基于单片机的自动温控系统的设计.毕业论文开题报告,单片机温度控制系统的论文。温度是一个基本的物理量,自然界中的一切过程无不与温度密切相关。温度传感器是

资讯

河南财经政法大学毕业生论文(河南财经政法大学的学术研究)

阅读(63)

本文主要为您介绍河南财经政法大学毕业生论文,内容包括河南财经政法大学毕业论文满分多少分,河南财经政法大学毕业论文满分多少分,河南财经政法大学自考毕业论文申请时间。截至2015年3月,河南财经政法大学共有3个河南省协同创新中心(2015年9

资讯

金属热材料毕业论文(关于金属热处理的有关论文)

阅读(62)

本文主要为您介绍金属热材料毕业论文,内容包括关于金属热处理的有关论文,关于金属热处理的有关论文,耐热钢论文。45钢亚温淬火工艺的研究摘要:采用正交组合回归设计试验方法研究了亚温淬火条件下,淬火温度和回火温度对45钢强度及硬度的影响规

资讯

毕业论文谢谢老师(论文老师的致谢词怎么写)

阅读(81)

本文主要为您介绍毕业论文谢谢老师,内容包括论文老师的致谢词怎么写,有关毕业论文里对教师的答谢词应该怎么说?,急求论文致谢主要是夸奖老师的就好了不要太恶心的诚恳点的。在此论文完成之际,作者要深深地感谢攻读硕士学位期间所有在学习和

资讯

变压器安装毕业设计论文(急需关于变压器)

阅读(73)

本文主要为您介绍变压器安装毕业设计论文,内容包括关于变压器,毕业论文该往哪方面写,急需关于变压器继电保护研究的毕业论文,110kv变电站电气一次部分设计毕业论文谁给帮忙指导一下怎么弄百度。基于压流波形特征的变压器继电保护的研究 【

资讯

大学毕业保险论文题目(保险专业的学年论文题目有些什么?)

阅读(60)

本文主要为您介绍大学毕业保险论文题目,内容包括保险专业的学年论文题目有些什么?,求保险方面的毕业论文题目(本科),在线等,急急急!,有关保险方面的论题。1)论我国人身保险发展的市场前景 2)商业保险与社会保险的比较 3)商业保险在我国的发展

资讯

安徽师范大学毕业生论文管理系统(旅游管理自考本科的科目)

阅读(81)

本文主要为您介绍安徽师范大学毕业生论文管理系统,内容包括安徽师范大学内网可以登陆的网站?,自考安徽师范大学本科汉语言文学需要报考哪些门?需要最新消息,谢,旅游管理自考本科的科目。旅游管理(独立本科段)考试计划 主考学校:安徽师范大学 1

资讯

北大本科毕业论文字数(毕业论文大概需要多少字?)

阅读(111)

本文主要为您介绍北大本科毕业论文字数,内容包括毕业论文大概需要多少字?,大学本科毕业论文多少字怎么计算字数,大学本科论文需要写多少字数。1.毕业论文是你大学的最后一门课程,十分重要。论文的方向是自己的专业方向,比较前瞻的观点加以论

资讯

毕业论文专业用语(医学论文如何正确翻译专业术语)

阅读(61)

本文主要为您介绍毕业论文专业用语,内容包括在正文中所引用的术语、语录、观点、论点的右上角按照其在论文中出,英语论文中论证的专业术语是什么?,医学论文如何正确翻译专业术语。医学论文翻译一般较多的是医学论文的摘要翻译,即把医学论文