网络并发服务器设计---9

网络并发服务器设计

 1 #include <stdio.h>
 2 #include <sys/types.h>
 3 #include <sys/socket.h>
 4 #include <string.h>
 5 #include <netinet/in.h>
 6
 7 #include <unistd.h>
 8
 9 #define portnum 3333
10
11 int main()
12 {
13     int sockfd;
14     int new_fd;
15     char buffer[128];
16     int sin_size;
17     struct sockaddr_in server_addr;
18     struct sockaddr_in client_addr;
19     int nbyte=10;    //表示服务器打印前十个字节
20     int pid;
21
22     //1.创建套接字
23     if((sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1)
24     {
25         printf("creat socket error!\n");
26         exit(1);
27     }
28
29     //2.1设置绑定的地址
30     bzero(&server_addr,sizeof(struct sockaddr_in));
31     server_addr.sin_family = AF_INET;
32     server_addr.sin_port = htons(portnum);
33     server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
34
35     //2.2绑定地址
36     bind(sockfd, (struct sockaddr *)(&server_addr),sizeof(struct sockaddr));
37
38     //3.监听端口
39     listen(sockfd,5);
40
41     while(1)
42     {
43         //4.等待连接
44         sin_size = sizeof(struct sockaddr);
45         new_fd = accept(sockfd,(struct sockaddr *)(&client_addr),&sin_size);
46         printf("server get connection %s\n",inet_ntoa(client_addr.sin_addr));
47
48         //创建子进程,由子进程处理数据通讯
49         if((pid = fork())== 0)
50         {
51             //5.接受数据
52             recv(new_fd,buffer,128,0);
53             buffer[nbyte] = ‘\0‘;
54             printf("server receive : %s\n",buffer);
55             close(new_fd);
56             close(sockfd);
57             exit(0);
58         }
59         else if(pid<0)
60             printf("fork error!\n");
61
62         //6.结束连接
63         close(new_fd);
64     }
65     close(sockfd);
66 }

与TCP服务器程序相比较添加以上特殊颜色的代码即可实现并发服务器设计:TCP服务器程序设计

时间: 2024-08-11 01:20:28

网络并发服务器设计---9的相关文章

网络并发服务器设计

为什么要并发服务器 要让服务器高效同时处理各个请求. a.采用多进程来处理(也可以多线程.或者线程池) tcp_server.c

linux并发服务器设计

linux 并发服务器: http://blog.csdn.net/ygl840455828ygl/article/details/52438167 http://www.2cto.com/os/201309/245280.html http://www.cnblogs.com/venow/archive/2012/11/22/2779667.html http://blog.csdn.net/turkeyzhou/article/details/8609360 1 背景简介 H330S模块集成

并发服务器设计

采用多进程来处理 tcp_server_fork.c 1 #include <stdio.h> 2 #include <sys/socket.h> 3 #include <string.h> 4 #include <netinet/in.h> 5 6 #define portnum 3333 7 8 int main() 9 { 10 int sockfd ,new_fd; 11 struct sockaddr_in server_addr; 12 stru

[国嵌攻略][093][并发服务器设计]

server.c #include <sys/socket.h> #include <netinet/in.h> #include <strings.h> #include <stdio.h> #include <unistd.h> #include <stdlib.h> #define SERVER_PORT 3333 void main(){ //创建标识 int serverfd; serverfd = socket(AF_IN

Linux 网络编程——并发服务器的三种实现模型

服务器设计技术有很多,按使用的协议来分有 TCP 服务器和 UDP 服务器,按处理方式来分有循环服务器和并发服务器. 循环服务器与并发服务器模型 在网络程序里面,一般来说都是许多客户对应一个服务器(多对一),为了处理客户的请求,对服务端的程序就提出了特殊的要求. 目前最常用的服务器模型有: ·循环服务器:服务器在同一时刻只能响应一个客户端的请求 ·并发服务器:服务器在同一时刻可以响应多个客户端的请求 UDP 循环服务器的实现方法 UDP 循环服务器每次从套接字上读取一个客户端的请求 -> 处理

Linux网络编程——tcp并发服务器(多进程)

一.tcp并发服务器概述 一个好的服务器,一般都是并发服务器(同一时刻可以响应多个客户端的请求).并发服务器设计技术一般有:多进程服务器.多线程服务器.I/O复用服务器等. 二.多进程并发服务器 在 Linux 环境下多进程的应用很多,其中最主要的就是网络/客户服务器.多进程服务器是当客户有请求时,服务器用一个子进程来处理客户请求.父进程继续等待其它客户的请求.这种方法的优点是当客户有请求时,服务器能及时处理客户,特别是在客户服务器交互系统中.对于一个 TCP 服务器,客户与服务器的连接可能并不

LINUX环境并发服务器的三种实现模型

服务器设计技术有很多,按使用的协议来分有TCP服务器和UDP服务器.按处理方式来分有循环服务器和并发服务器. 1  循环服务器与并发服务器模型 在网络程序里面,一般来说都是许多客户对应一个服务器,为了处理客户的请求,对服务端的程序就提出了特殊的要求. 目前最常用的服务器模型有: ·循环服务器:服务器在同一时刻只能响应一个客户端的请求 ·并发服务器:服务器在同一时刻可以响应多个客户端的请求 1.1 UDP循环服务器的实现方法: UDP循环服务器每次从套接字上读取一个客户端的请求->处理->然后将

Linux网络编程客户\服务器设计范式

1.前言 网络编程分为客户端和服务端,服务器通常分为迭代服务器和并发服务器.并发服务器可以根据多进程或多线程进行细分,给每个连接创建一个独立的进程或线程,或者预先分配好多个进程或线程等待连接的请求.今天探讨三种设计范式 (1)迭代服务器 (2)并发服务器,为每个客户请求创建一个进程或线程 (3)预先分配子进程或线程,每个子进程或线程调用accept 3.测试用例: 客户端代码: 1 #include <sys/wait.h> 2 #include <string.h> 3 #inc

百万级高并发WebRTC流媒体服务器设计与开发

第1章 课程导学与准备工作本章主要介绍为何要学习WebRTC流媒体服务器开发,以及本门课能为我们带来哪些收获.之后会为大家介绍本课程内容具体安排,最后给出如何学好这门课程的一些学习建议.希望大家都能通过这门课程,学有所成,学有所归. 第2章 C++语言基础回顾[已掌握,可略过]为了便于大家更好的学习流媒体服务器的开发,本章将带大家对WebRTC服务器开发中用到的C++基础知识进行回顾梳理,如类的定义与使用,继承,多态,名存空间等相关知识. 第3章 服务器基础编程本章将带你学习最基础的服务器开发,