1.
客户端连接服务器(登陆,上传相应的数据(起码有聊天室编号))
2.
客户端发生消息给服务器(消息+聊天室编号)
3.
服务器根据客户端上传的聊天室编号广播消息
4.
客户端接受服务器传来的消息
用到的技术就是socket编程(应该有其他的现成的框架,不过我用得比较多的是java,不清楚c的),如果还想做个界面的话,可以用qt做,或者MFC,应该还有其他可选方式,不过我不知道~~~。
上面只是简单的,你要做完备的还有很多问题需要考虑,比如说加密数据,优化使其能容纳较多的用户,服务器崩溃时的处理方案等等。
可以使用智能聊天机器人的接口来做
下面是一个简单的使用小耗子机器人提供的接口的聊天代码
#include <stdio.h>#include <string.h>
#include <curl/curl.h>
#include <stdlib.h>
#define BOT_SER "https://brisk.eu.org/smbot/sm.php"
typedef struct
{
size_t len
char *msg
}MSG
size_t get_data(char *ptr,size_t size,size_t nmemb,MSG *msg)
{
msg->msg=realloc(msg->msg,msg->len+nmemb+1)
snprintf(msg->msg+msg->len,nmemb,"%s",ptr)
msg->len+=nmemb
return nmemb
}
int main(int argc,char **argv)
{
CURL *curl
MSG msg
char buf[1024]
char data[2048]
curl=curl_easy_init()
msg.len=0
msg.msg=NULL
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,get_data)
curl_easy_setopt(curl,CURLOPT_WRITEDATA,&msg)
curl_easy_setopt(curl,CURLOPT_USERAGENT,"CBot/From Baidu zhidao")
while(1)
{
printf(">")
scanf("%s",buf)
if(strcmp(buf,"exit") == 0)
break
snprintf(data,sizeof(data),"%s?msg=%s",BOT_SER,buf)
curl_easy_setopt(curl,CURLOPT_URL,data)
curl_easy_perform(curl)
if(msg.len)
{
printf("%s\n",msg.msg)
msg.len=0
free(msg.msg)
msg.msg=NULL
}
}
curl_easy_cleanup(curl)
return 0
}
Linux系统都是C写的用C当然行得通
就是个socket编程嘛
我们原来做过一个的原理描述
当然
这个是C\S模式的
其实你可以做成
无服务端的
本系统具有局域网聊天功能。采用了C\S模式(即服务器创建套接字后,转换为监听套接字,一直在监听是否由客户端的请求。服务器接收到相应的请求后,进行相应的处理)。采用了TCP/IP(面向连接)协议。运用了SOCKET套接字实现了很方便的访问TCP/IP协议。多线程的 *** 作。
服务器的程序(简述):
创建socket-->bind()-->listen()-->accept()-->recv/send()-->close()
客户端的程序(简述):
创建scoket-->发送connect-->recv/send()-->close()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)