我想问下数据库跟前台一般是用什么方法连接的? 一般有几种方法,用于网上聊天系统

我想问下数据库跟前台一般是用什么方法连接的? 一般有几种方法,用于网上聊天系统,第1张

各种网站开发语言连接数据库的方法都有各自的数据库连接 *** 作,不过大致都是一样的,通过数据库连接字符串连接数据库,通过执行SQL对数据库进行增删改查等 *** 作。

在线的Web聊天系统相对于客户端的聊天系统在程序结构上有很大的不同,Web聊天系统(也就是B/S结构的聊天系统),每个用户所 *** 作的都是同一个程序,大致设计思路如下几种:

1.利用Application 公共变量,每个用户在登录Web系统的时候,通常会创建一个Session来保存记录该用户的身份,这个Session是每个用户独有的,相当于是个私有房间,而Application 公共变量 是每个用户都可以进行 *** 作的,相当于一个公共房间,每个用户都可以进入,但是这个公共房间一次只能进入一个用户,所以进入前要开门,进入后要锁门也就是需要Lock *** 作。可以用这个唯一的Application 来保存每个用户 说过的话,显示在每个用户的页面上(显示时最好使用AJAX),如需要保存聊天记录,把Application 中的值存入数据库即可

2.第二种方法跟现在论坛程序中的消息模块差不多,用户在说话时,直接存入数据库,需要存入的还有这个发言是 谁说的,给谁说的,在用户的页面上可以使用Ajax进行间隔的更新 *** 作,使用户可以看到即时消息

应该还有其他的方法可以实现网上聊天系统,我个人推荐第二种方法,具体的 *** 作要看使用的那种语言开发的,思路都是一样的,希望可以给你一些帮助

不知你是要B/S结构,还是C/S结构的,上面说的是B/S结构

对于C/S结构,有用户对用户的点对点发送 和 服务器对用户的一对多发送,传统的是使用socket进行发送与接收,不过现在大部分即时聊天工具,如QQ,MSN等使用的是新兴起的XMPP即时通信协议,使用XML格式进行传输,你可以在网上找些相关的资料,至于数据库在该系统中的使用,主要是在服务器端

这样:

#include <stdlib.h>

#include <stdio.h>

#include <errno.h>

#include <string.h>

#include <unistd.h>

#include <netdb.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <sys/types.h>

#include <arpa/inet.h>

#include <pthread.h>

#define MAXLINE 100

void *threadsend(void *vargp)

void *threadrecv(void *vargp)

int main()

{

int *clientfdp

clientfdp = (int *)malloc(sizeof(int))

*clientfdp = socket(AF_INET,SOCK_STREAM,0)

struct sockaddr_in serveraddr

struct hostent *hp

bzero((char *)&serveraddr,sizeof(serveraddr))

serveraddr.sin_family = AF_INET

serveraddr.sin_port = htons(15636)

serveraddr.sin_addr.s_addr = inet_addr("127.0.0.1")

if(connect(*clientfdp,(struct sockaddr *)&serveraddr,sizeof(serveraddr)) <0){

      printf("connect error\n")

      exit(1)

}

pthread_t tid1,tid2

printf("connected\n")

while(1){

pthread_create(&tid1,NULL,threadsend,clientfdp)

pthread_create(&tid2,NULL,threadrecv,clientfdp)

}

return EXIT_SUCCESS

}

void *threadsend(void * vargp)

{

//pthread_t tid2

int connfd = *((int *)vargp)

int idata

char temp[100]

while(1){

//printf("me: \n ")

fgets(temp,100,stdin)

send(connfd,temp,100,0)

printf("          client send OK\n")

}

printf("client send\n")

return NULL

}

void *threadrecv(void *vargp)

{

char temp[100]

int connfd = *((int *)vargp)

while(1){

int idata = 0

idata = recv(connfd,temp,100,0)

if(idata >0){

printf("server :\n%s\n",temp)

}

}

return NULL

}

扩展资料:

注意事项

linux下编译多线程代码时,shell提示找不到 pthread_create函数,原因是 pthread.h不是linux系统默认加载的库文件,应该使用类似如下gcc命令进行编译:

gcc echoserver.c -lpthread -o echoserver

只要注意 -lpthread参数就可以了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9966875.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存