用c语言编写聊天程序(用c语言编写聊天程序的软件)
今天给各位分享用c语言编写聊天程序的知识,其中也会对用c语言编写聊天程序的软件进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、关于用C语言开发一个简单的局域网聊天软件
2、用C语言在WIN32下编译一个简单的聊天程序,客户端向服务器发消息,服务器接到消息后会返回一个
3、跪求大神指点网络编程聊天程序(用c语言实现,在ubuntu终端中运行),要求:
4、C语言聊天程序 想写个基于C语言的简单聊天程序(控制台程序),C/S模式,实现客户端之间的通信
5、如何用C语言编写一个简单的聊天室程序
6、linux下用c语言编写局域网聊天工具
关于用C语言开发一个简单的局域网聊天软件
Linux系统都是C写的 用C当然行得通
就是个socket编程嘛
我们原来做过一个的原理描述 当然 这个是CS模式的 其实你可以做成 无服务端的
本系统具有局域网聊天功能。采用了CS模式(即服务器创建套接字后,转换为监听套接字,一直在监听是否由客户端的请求。服务器接收到相应的请求后,进行相应的处理)。采用了TCP/IP(面向连接)协议。运用了SOCKET套接字实现了很方便的访问TCP/IP协议。多线程的操作。
服务器的程序(简述):
创建socket–bind()–listen()–accept()–recv/send()–close();
客户端的程序(简述):
创建scoket–发送connect–recv/send()–close();
用C语言在WIN32下编译一个简单的聊天程序,客户端向服务器发消息,服务器接到消息后会返回一个
#includestdio.h#includestdlib.h
#includestring.h
#includesys/types.h
#includeerrno.h
#includenetinet/in.h
#includesys/socket.h
#define SERVERPORT 5555#define BACKLOG 10
#define MAXLEN 1024
int main(){
int sockfd,client_fd;
int sin_size = 0;
int recvlen = 0;
char recvbuf[MAXLEN]={0};
struct sockaddr_in my_addr;
struct sockaddr_in cli_addr;
int iRet;
/*建立socke通信*/
if((sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1){
printf(“Create socket error
”);
exit(1);
}
printf(“socket success
”);
my_addr.sin_family=AF_INET; my_addr.sin_port=htons(SERVERPORT);
my_addr.sin_addr.s_addr=INADDR_ANY;
memset(my_addr.sin_zero,0,8);
/*绑定socket端口*/
if(bind(sockfd,(struct sockaddr *)my_addr,sizeof(struct sockaddr)) == -1){
printf(“bind error
”);
close(sockfd);
exit(1);
}
printf(“bind success
”);
/*监听端口*/
if(listen(sockfd,BACKLOG) == -1){
printf(“listen error
!”);
close(sockfd);
exit(1);
}
printf(“listren success
”);
while(1) {
sin_size = sizeof(struct sockaddr_in);
/*阻塞等待客户端发送消息*/
if((client_fd=accept(sockfd,(struct sockaddr *)cli_addr,sin_size)) == -1)
{
printf(“accept error !”);
continue;
}
printf(“accept success
”);
printf(“receive a connection form %s
”,inet_ntoa(cli_addr.sin_addr));
/*fork进程,子进程处理接收的信息*/
iRet=fork();
if(iRet 0)
{
printf(” fork err, pid=[%d]”, getpid());
}
/*fork返回0,为子进程*/
else if(iRet == 0)
{
printf(“pid=[%d]”, getpid());
printf(“子进程
”);
memset(recvbuf,0,sizeof(recvbuf));
/*接收客户端发送的内容*/
if((recvlen = recv(client_fd,recvbuf,MAXLEN,0)) == -1)
{
printf(“recv error
”);
close(client_fd);
exit(1);
}
printf(“recvlen[%d]
”,recvlen);
printf(“recvmsg:
%s
”,recvbuf);
/*向客户端发送内容*/ if(send(client_fd,recvbuf,recvlen,0) == -1)
{
printf(“send error
”);
close(client_fd);
exit(1);
}
printf(“sendmsg:
%s
”,recvbuf);
close(client_fd);
exit(0);
}
/*父进程,返回子进程pid*/
else
{
printf(“pid=[%d]”, getpid());
printf(“父进程
”);
continue;
}
}
close(sockfd);
exit(0);
}
跪求大神指点网络编程聊天程序(用c语言实现,在ubuntu终端中运行),要求:
cdsn上面应该有相关的程序,还可能会有代码,你可以去那看看。
C语言聊天程序 想写个基于C语言的简单聊天程序(控制台程序),C/S模式,实现客户端之间的通信
这个基于socket的可以实现,你网上查查看有很多的源码和实例可以供参考。
如何用C语言编写一个简单的聊天室程序
聊天室的话涉及网络通信。流程大概是:
1.
客户端连接服务器(登陆,上传相应的数据(起码有聊天室编号))
2.
客户端发生消息给服务器(消息+聊天室编号)
3.
服务器根据客户端上传的聊天室编号广播消息
4.
客户端接受服务器传来的消息
用到的技术就是socket编程(应该有其他的现成的框架,不过我用得比较多的是java,不清楚c的),如果还想做个界面的话,可以用qt做,或者MFC,应该还有其他可选方式,不过我不知道~~~。
上面只是简单的,你要做完备的还有很多问题需要考虑,比如说加密数据,优化使其能容纳较多的用户,服务器崩溃时的处理方案等等。
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
”,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
”,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(argc2)
{
fprintf(stderr,”Please enter the sserver’s name!
”);
exit(1);
}
if((host=gethostbyname(argv[1]))==NULL)
{
herror(“get host by name error!
”);
exit(1);
}
*/
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
perror(“socket creat error!
”);
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!
”);
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
”,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;
}
用c语言编写聊天程序的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于用c语言编写聊天程序的软件、用c语言编写聊天程序的信息别忘了在本站进行查找喔。
最后,我要感谢所有支持和关注嗨壳技术分享网(www.heikehao.com)的人们,是你们的支持和鼓励使我们更加坚定了创办这个平台的决心。我们将致力于为大家提供更好的内容和服务,为技术爱好者们搭建一个学习、分享和进步的家园。
原创文章,作者:语言我知,如若转载,请注明出处:https://www.heikehao.com/797.html