聊天編程
❶ 用動態網頁編程實現一個簡單的聊天程序
給你個思路吧
在伺服器端准備好足夠大的空間,要存儲聊天信息
先准備資料庫
一個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();
}