C语言编写的服务器端程序源码分享 (c 编写的服务器端程序源码)
随着互联网普及和应用场景的不断扩大,服务器端的重要性也越来越突出。服务器端是指在一定的网络环境下,提供各种网站、服务器管理等服务的程序运行的计算机。本文将分享一份采用C语言编写的服务器端程序源码,以供读者们参考和学习。
一、开发环境搭建
我们需要准备好基础的开发环境,包括:一个Linux环境的服务器、gcc编译器、vi等文本编辑器以及常见的系统库。在本次分享中,我们选用的是CentOS系统,gcc版本为4.8.5,vi编辑器和常见系统库已默认安装。
二、服务器端程序思路设计
1.创建套接字:通过socket函数创建TCP/UDP套接字,用来接收或发送数据。
2.绑定端口:使用bind函数将套接字与本地IP地址和端口绑定,以指示应用程序监听哪个端口的数据。若端口被占用,程序将无法运行。
3.监听端口:调用listen函数并传入套接字和更大连接数,监听客户端请求连接。
4.接受客户端请求:通过accept函数接收客户端连接请求,并返回新套接字,与客户端套接字一样,也用来接收或发送数据。
5.数据交流:通过读写套接字来实现客户端与服务器之间的数据交流。
6.关闭套接字:需要清理和关闭套接字,释放资源。
三、服务器端程序源码实现
“`
#include
#include
#include
#include
#include
#include
#include
#include
#define MAXLINE 1024
int mn()
{
char sendbuff[MAXLINE],recvbuff[MAXLINE];
int listenfd;
struct sockaddr_in servaddr,cliaddr;
socklen_t clilen;
pid_t childpid;
if((listenfd=socket(AF_INET,SOCK_STREAM,0)) == -1){
perror(“create socket error”);
exit(1);
}
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(6666);
if(bind(listenfd,(struct sockaddr*)&servaddr,sizeof(servaddr)) == -1){
perror(“bind error”);
exit(1);
}
if(listen(listenfd,10) == -1){
perror(“listen error”);
exit(1);
}
printf(“======wating for client’s request======\n”);
while(1){
clilen = sizeof(cliaddr);
int connfd = accept(listenfd,(struct sockaddr*)&cliaddr,&clilen);
if(connfd == -1){
perror(“accept error”);
continue;
}
childpid = fork();
if(childpid == 0){
close(listenfd);
while(1){
bzero(recvbuff,sizeof(recvbuff));
int len = recv(connfd,recvbuff,sizeof(recvbuff),0);
if(len > 0){
printf(“client say:%s”,recvbuff);
bzero(sendbuff,sizeof(sendbuff));
fgets(sendbuff,sizeof(sendbuff),stdin);
send(connfd,sendbuff,strlen(sendbuff),0);
}
else{
printf(“client quit.\n”);
break;
}
}
close(connfd);
exit(0);
}
else if(childpid == -1){
perror(“fork error”);
close(connfd);
exit(1);
}
close(connfd);
}
close(listenfd);
return 0;
}
“`
四、程序运行和测试
通过gcc编译器编译程序,运行后我们可以看到,“======wating for client’s request======”的提示语句,表示服务器端程序已经成功开启,并正在等待客户端的连接请求。
我们可以通过telnet等工具,模拟客户端连接请求。当客户端连接后,服务器端将自动回复“client say:”,并等待客户端的输入。
输入完成后,服务器端将会回复“请输入要发送的信息:”,此时可以输入要发送的信息并发送。当客户端接收到信息后,服务器端将自动回复“message sent”,并等待下一次接收客户端的信息。
如果需要终止客户端与服务器端之间的连接,可以输入“quit”,服务器端将自动回复“client quit”,并自动关闭连接。
五、