聊天编程
❶ 用动态网页编程实现一个简单的聊天程序
给你个思路吧
在服务器端准备好足够大的空间,要存储聊天信息
先准备数据库
一个table是放已登录的用户
一个table是放聊天信息
--------初始化----------
然后做一个网页,命名为main.php
首先确认session里是否有登录信息
没有的话转到login.php
--------界面------------
登陆后网页里上面显示一个div,放聊天的信息
div上面应该还有标签页,切换聊天窗口
下面是一个textarea
左面有已登录的用户的列表,单击用户名可以开始聊天
-------接收信息---------
接下来是要接收服务器端的数据库信息
每隔几秒就用ajax向服务器发送post请求,请求里设置一下header
timestamp是(new Date()).getTime()
user1是聊天的用户(在这个网页里登录的)
action是get
然后请求发送到一个query.php
query.php里
首先连接数据库
通过action知道是要得到消息
然后根据user1找到行,
接着用timestamp比较时间,如果消息发送比timestamp大,那么就输出这个消息
最后返回一个json对象,包括所有新的消息
然后javascript开始处理返回的json,根据user2的不同,把它们放到不同的聊天窗口中,或者是新建一个窗口
---------发送消息-----------
当用户在textarea里按下了enter或者用鼠标点击了发送按钮
那么再新建一个post请求,请求主体是textarea里的内容,然后也在header里设置timestamp,user1和user2,action设置为send
依然发送到query.php
不过这次通过action得知是要发送消息
所以连接数据库后插入一行
行里应该有timestamp,message,user1,user2四列
这样一个简单的聊天程序就完成了
仅供参考
❷ 简单聊天程序的设计与实现用什么软件
应用软件可用各种编程软件来编写的。
这些编程软件使用的语言可有C或C++语言,Bisic,Pascal语言,Java,易语言等在各种编程软件的平台上按语言的语法要求编写代码,通过编译成应用程序。
c语言也能写出来这些应用程序,简单的就是播放器、计算器、优化大师、QQ聊天工具、聊天室、俄罗斯方块等等吧!
❸ 如何用c语言编写QQ聊天程序(源代码)
1、首先,我们编写C语言的头文件#include <stdio.h>。
❹ 如何用C语言编写一个简单的聊天室程序
这样:
#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 ");
exit(1);
}
pthread_t tid1,tid2;
printf("connected ");
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: ");
fgets(temp,100,stdin);
send(connfd,temp,100,0);
printf(" client send OK ");
}
printf("client send ");
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 : %s ",temp);
}
}
return NULL;
}
(4)聊天编程扩展阅读:
注意事项
linux下编译多线程代码时,shell提示找不到 pthread_create函数,原因是 pthread.h不是linux系统默认加载的库文件,应该使用类似如下gcc命令进行编译:
gcc echoserver.c -lpthread -o echoserver
只要注意 -lpthread参数就可以了。
❺ 做聊天软件~需要用什么编程软件
要看你用什么语言做。在全球范围来说:目前java是最流行的编程语言也是用的最多的语言。c++、c其次。 聊天软件是一款要结合服务器端编程语言来编写的软件。集成来说你可以用 微软的 vs。也可以用java的相关软件。这要根据你所学的语言来定的。
❻ 怎么用C++编写一个基于UDP的简单聊天程序
首先声明下,下面的答案是从博客上粘过来了,因为以前自己写的时候也参考这个写的。
基于UDP的聊天程序服务器端源程序:
#include "winsock2.h"
#include "stdio.h"
void main()
{
//加载套接字(winsock)库,加载这段代码拷贝于MSDN中WSAStartup的介绍
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 ); //版本号为1.1
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return;
}
//创建套接字
//注意第二个参数和TCP设置不同
SOCKET sockServer=socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN addrServer; //设置服务器端套接字的地址结构的相关属性
addrServer.sin_addr.S_un.S_addr=htonl(INADDR_ANY); //设置IP
addrServer.sin_family=AF_INET;
addrServer.sin_port=htons(6000); //设置端口号
//将套接字和服务器地址结构绑定
bind(sockServer,(SOCKADDR*)&addrServer,sizeof(SOCKADDR));
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
char recvBuf[100];
char tempBuf[100];
char sendBuf[100];
while(1)
{
//从客户端接收数据
int result=recvfrom(sockServer,recvBuf,100,0,(SOCKADDR*)&addrClient,&len);
if(result==SOCKET_ERROR)
{
int errCode=WSAGetLastError();
printf("error:%d",errCode);
break; //退出循环
}
else
{
if(recvBuf[0]=='q') //对方请求退出
{
//同样将退出请求发送回去
sendto(sockServer,"q",strlen("q")+1,0,(SOCKADDR*)& addrClient,sizeof(SOCKADDR));
printf("the chat end!");
break;
}
else
{
//将对方发送过来的信息前段加上IP地址进行输出
sprintf(tempBuf,"%s said:%s",inet_ntoa(addrClient.sin_addr),recvBuf);
printf("%s\n",tempBuf);
//将用户的键盘输入发送到对方
printf("pleas input the message:\n");
gets(sendBuf); //得到键盘输入内容 sendto(sockServer,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)& addrClient,sizeof(SOCKADDR));
}
}
}
closesocket(sockServer);
WSACleanup();
}
基于UDP的聊天程序客户端端源程序:
#include "winsock2.h"
#include "stdio.h"
void main()
{
//加载套接字(winsock)库,加载这段代码拷贝于MSDN中WSAStartup的介绍
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 ); //版本号为1.1
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return;
}
//创建套接字
SOCKET sockClient=socket(AF_INET,SOCK_DGRAM,0); //注意第二个参数和TCP设置不同
SOCKADDR_IN addrServer; //服务器地址结构
addrServer.sin_addr.S_un.S_addr=inet_addr("127.0.0.1"); //服务器地址
addrServer.sin_family=AF_INET;
addrServer.sin_port=htons(6000); //服务器端口号
char tempBuf[100];
char recvBuf[100];
char sendBuf[100];
int len=sizeof(SOCKADDR);
while(1)
{
printf("plese input the message:\n");
gets(sendBuf); //得到用户的键盘输入
sendto(sockClient,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)&addrServer,sizeof(SOCKADDR));
int result=recvfrom(sockClient,recvBuf,100,0,(SOCKADDR*)&addrServer,&len);
if(result==SOCKET_ERROR)
{
int errCode=WSAGetLastError();
printf("error:%d",errCode);
break; //退出循环
}
else
{
if(recvBuf[0]=='q') //对方请求退出
{
//同样将退出请求发送回去
sendto(sockClient,"q",strlen("q")+1,0,(SOCKADDR*)&addrServer,sizeof(SOCKADDR));
printf("the chat end!");
break;
}
else
{
//将对方发送过来的信息前段加上IP地址进行输出
sprintf(tempBuf,"%s said:%s",inet_ntoa(addrServer.sin_addr),recvBuf);
printf("%s\n",tempBuf);
}
}
}
closesocket(sockClient);
WSACleanup();
}