當前位置:首頁 » 操作系統 » linux區域網聊天

linux區域網聊天

發布時間: 2023-02-23 12:07:27

1. 關於用c語言開發一個簡單的區域網聊天軟體

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();

2. 如何在LINUX下用QT 的treeWidget組件編寫簡單區域網聊天工具,使用資料庫存儲數據並用套接字鏈接區域網

這都算個小項目了,你在這問還不如去搜個項目代碼,另外,你應該用tableWidget吧

3. linux區域網聊天需要伺服器嗎

看你用什麼聊天軟體,需要獨立第三方伺服器支持的軟體就需要單獨的,否則雙方互為C/S就無需伺服器。

4. linux下做區域網聊天室會存在哪些bug

這個估計不是即時的,,用框架就是為了刷新一次SHOW.ASP,,, 建議你另外換一個吧,,,有很多是即時的, 以前在用艾恩上傳組件時候,看到他有出過聊天室,,你搜索一下:艾恩在線聊天室

5. linux下用c語言編寫區域網聊天工具

/*伺服器*/
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#define SERVPORT 5555
#define BACKLOG 10
#define MAX(a,b) ((a)>(b)?(a):(b))
void str_echo(int);
void server()
{
int sockfd,client_fd;
struct sockaddr_in my_addr;
struct sockaddr_in remote_addr;
socklen_t sin_size;
if((sockfd=socket(AF_INET,SOCK_STREAM,0))== -1)
{
perror("socket create error!");
exit(1);
}
my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(SERVPORT);
my_addr.sin_addr.s_addr=INADDR_ANY;
bzero(&(my_addr.sin_zero),8);
if(bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))==-1)
{
perror("bind error!");
exit(1);
}
if(listen(sockfd,BACKLOG)==-1)
{
perror("listen error!");
exit(1);
}
while(1)
{
sin_size=sizeof(struct sockaddr_in);
if((client_fd=accept(sockfd,(struct sockaddr *)&remote_addr,&sin_size))==-1)
{
perror("accept error!");
continue;
}
printf("received a connection from %s\n",inet_ntoa(remote_addr.sin_addr));
if(!fork())
{
close(sockfd);
str_echo(client_fd);
exit(0);
}
close(client_fd);
}
}
void str_echo(int sockfd)
{
int maxfd;
char sendbuf[1024]={0};
char recvbuf[1024]={0};
fd_set rfds;

while(1)
{
FD_SET(0,&rfds);
FD_SET(sockfd,&rfds);
maxfd=MAX(0,sockfd)+1;

select(maxfd,&rfds,NULL,NULL,NULL);
if(FD_ISSET(sockfd,&rfds))
{
bzero(recvbuf,1024);
recv(sockfd,recvbuf,1024,0);
printf("C:%s\n",recvbuf);
}
if(FD_ISSET(0,&rfds))
{
read(0,sendbuf,1024);
send(sockfd,sendbuf,strlen(sendbuf),0);
bzero(sendbuf,1024);
}
}
}
int main()
{
server();
return 0;
}
/*客戶端*/
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#define SERVPORT 5555
#define MAXSIZE 1024
#define MAX(a,b) ((a)>(b)?(a):(b))
void client(int argc,char **argv)
{
int sockfd,maxfd;
char sendbuf[MAXSIZE]={0};
char recvbuf[MAXSIZE]={0};
// struct hostent *host;
struct sockaddr_in serv_addr;
fd_set rfds;
/* if(argc<2)
{
fprintf(stderr,"Please enter the sserver's name!\n");
exit(1);
}
if((host=gethostbyname(argv[1]))==NULL)
{
herror("get host by name error!\n");
exit(1);
}
*/
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
perror("socket creat error!\n");
exit(1);
}
serv_addr.sin_family=AF_INET;
serv_addr.sin_port=htons(SERVPORT);
// serv_addr.sin_addr=*((struct in_addr *)host->h_addr);
serv_addr.sin_addr.s_addr=inet_addr("127.0.0.1");
bzero(&(serv_addr.sin_zero),8);
if(connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(struct sockaddr))==-1)
{
perror("connection error!\n");
exit(1);
}
FD_ZERO(&rfds);
while(1)
{
FD_SET(0,&rfds);
FD_SET(sockfd,&rfds);
maxfd=MAX(0,sockfd)+1;
select(maxfd,&rfds,NULL,NULL,NULL);
if(FD_ISSET(sockfd,&rfds))
{
bzero(recvbuf,MAXSIZE);
recv(sockfd,recvbuf,MAXSIZE,0);
printf("S:%s\n",recvbuf);
}
if(FD_ISSET(0,&rfds))
{
fgets(sendbuf,MAXSIZE,stdin);
send(sockfd,sendbuf,strlen(sendbuf),0);
bzero(sendbuf,MAXSIZE);
}
}
// close(sockfd);
}
int main(int argc,char **argv)
{
client(argc,argv);
return 0;
}

熱點內容
怎麼電腦密碼 發布:2025-08-10 23:03:53 瀏覽:737
虛擬機下安裝linux 發布:2025-08-10 23:02:21 瀏覽:761
有哪些配置好車 發布:2025-08-10 22:57:19 瀏覽:905
我的世界冷小壞伺服器 發布:2025-08-10 22:51:59 瀏覽:956
windows下編譯php擴展 發布:2025-08-10 22:43:53 瀏覽:726
鏈表反轉c語言 發布:2025-08-10 22:43:40 瀏覽:285
c語言求兩數之和 發布:2025-08-10 22:37:08 瀏覽:774
phptype 發布:2025-08-10 22:29:23 瀏覽:902
ios和android區別 發布:2025-08-10 22:24:00 瀏覽:832
安卓host是什麼意思 發布:2025-08-10 22:23:09 瀏覽:457