一个简单的echo服务模型(最原始版本,代码没有优化)
来源:互联网 发布:哈尔滨智达网络科科技 编辑:程序博客网 时间:2024/05/17 08:52
服务器端:
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <error.h>
#define PORT 8888
#define BACKLOG 5
void process_conn_server(int s);
int main()
{
int ss,sc;/*the socket descriptor of the server and the client*/
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;
int err;/*the return value*/
pid_t pid;
/*create a stream socket*/
ss = socket(AF_INET,SOCK_STREAM,0);
/*check the return value*/
if(ss < 0)
{
perror("socket error:");
return -1;
}
/*set the struct of the address of the server*/
bzero(&server_addr,sizeof(server_addr));/*clean*/
server_addr.sin_family = AF_INET;
server_addr.port = htons(PORT);
server_addr.sin_addr.s_addr = htol(INADDR_ANY);
/*bind the socket to the addrs*/
err = bind(ss,(struct sockaddr*)&server_addr,
sizeof(server_addr));
if(err < 0)/*check the return value*/
{
perror("bind error:");
return -1;
}
/*set listen*/
err = listen(ss,BACKLOG);
if(err < 0)
{
perror("listen error:");
return -1;
}
for(;;)
{
int addrlen = sizeof(struct sockaddr);
/*accept a connection and create a new socket descriptor*/
sc = accept(ss,(struct sockaddr*)&client_addr,&addrlen);
if(sc <0)
{
continue;
}
/*create a new process to deal with the new connect*/
pid = fork();
if(pid == 0)/*this is the child process*/
{
close(ss);
process_conn_server(sc);/*the process function*/
}
else /*this is the parent process*/
{
close(sc);
}
}
/*the defination of the process function*/
void process_conn_server(int s)
{
ssize_t size = 0;
char buffer[1024];
for(;;)
{
size = read(s,buffer,1024);
if(size == 0)
{
return ;
}
sprintf(buffer,"%d bytes altogether/n",size);
write(s,buffer,strlen(buffer)+1);/*send to the client*/
}
}
}
- 一个简单的echo服务模型(最原始版本,代码没有优化)
- Python之最简单的http的echo 服务
- 最简单的Epoll模型代码
- 一个纯字符的(最原始版本)led驱动(有有助于加深对字符设备的理解)
- windows下的网络编程——Select模型实例,一款ECHO服务的实现代码
- windows下的网络编程——Select模型实例,一款ECHO服务的实现代码
- windows下的网络编程——Select模型实例,一款ECHO服务的实现代码
- 最简单最原始的模拟鼠标键盘的测试代码
- 一个最简单的Servlet服务
- 创建一个最简单的Linux服务
- linux网络编程(实现简单的echo服务)
- 一个简单的Tab平滑切换特效jquery代码,没有做最大效率优化
- 最简单的PHP socket echo server。
- java nio学习:简单的echo服务
- JavaScript 代码性能优化总结 && 一个最简单的web服务器
- 一个最简单的会员登陆代码
- 一个最简单的会员登陆代码
- 一个最简单的CARCKME代码
- 命名空间的使用方法
- 【编程语言】Android--模拟器里卸载应用程序的方法
- 文曲星猜数游戏 C实现
- What is JSON:初识JSON
- SQL Server 连接字符串总结
- 一个简单的echo服务模型(最原始版本,代码没有优化)
- UCSRC
- 试画出一张表以说明Z*11中每个元素的阶。找出最小的原根g并计算出一张表,要求写出对所有x属于Z*11,相应的ind11,g(x)的值。
- 一个经典的动态规划题-3次AC呵呵
- JQuery .Net CheckBoxList控件
- String 详解
- dlopen dlsym dlclose解析
- windows api 实现删除指定目录下的所有文件(包括子文件夹下的所有文件)
- c++