`

TCP并发服务器

阅读更多

服务器模型

在网络程序里面,一般来说都是许多客户对应一个服务器,为了处理客户的请求,对服务端的程序就提出了特殊的要求。目前最常用的服务器模型有:

1.循环服务器。服务器在同一时刻只能响应一个客户端的请求。

2.并发服务器。服务器在同一时刻可以响应多个客户端的请求。

前面介绍的为TCP和UDP循环服务器。

TCP并发服务器

并发服务器的思想是每一个客户机的请求并不由服务器直接处理,而是由服务器创建一个子进程处理。程序步骤如下:

socket(...);

bind(...);

listen(...);

while(1)

{

accept(...);

if(fork(..) == 0)

{

process();

close();

exit();

}

close();

}

服务器端程序实例,tcp_server_fork.c如下:

#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>

#define MY_PORT 3333

int main(int argc ,char **argv)
{
int listen_fd,accept_fd;
struct sockaddr_in client_addr;
int n;
int nbytes;

if((listen_fd=socket(AF_INET,SOCK_STREAM,0))<0)
{
printf("Socket Error:%s\n\a",strerror(errno));
exit(1);
}

bzero(&client_addr,sizeof(struct sockaddr_in));
client_addr.sin_family=AF_INET;
client_addr.sin_port=htons(MY_PORT);
client_addr.sin_addr.s_addr=htonl(INADDR_ANY);
n=1;

/* 如果服务器终止后,服务器可以第二次快速启动而不用等待一段时间 */
setsockopt(listen_fd,SOL_SOCKET,SO_REUSEADDR,&n,sizeof(int));
if(bind(listen_fd,(struct sockaddr *)&client_addr,sizeof(client_addr))<0)
{
printf("Bind Error:%s\n\a",strerror(errno));
exit(1);
}

listen(listen_fd,5);

while(1)
{
accept_fd=accept(listen_fd,NULL,NULL);
if((accept_fd<0)&&(errno==EINTR))
continue;
else if(accept_fd<0)
{
printf("Accept Error:%s\n\a",strerror(errno));
continue;
}
if((n=fork())==0)
{
/* 子进程处理客户端的连接 */
char buffer[1024];

if((nbytes=read(accept_fd,buffer,1024))==-1)
{
fprintf(stderr,"Read Error:%s\n",strerror(errno));
exit(1);
}
buffer[nbytes]='\0';
printf("Server received %s\n",buffer);

close(listen_fd);
close(accept_fd);
exit(0);
}
else
close(accept_fd);
}
}

分享到:
评论

相关推荐

    STM32 TCP并发服务器源码(可与多个客户端通信)

    TCP并发服务器源码则是实现STM32设备作为服务器,能够同时处理多个客户端连接请求的软件设计。在这个项目中,STM32将作为服务器端,通过TCP/IP协议栈接收并响应来自多个客户端的通信请求。 TCP(传输控制协议)是一...

    TCP并发服务器模型-多线程TCP服务器

    本文将深入探讨如何在rt-thread操作系统环境下实现一个高效的多线程TCP并发服务器模型。 rt-thread是一个开源、实时、轻量级的操作系统,特别适合于嵌入式设备。它提供了丰富的API接口,支持网络协议栈,使得开发者...

    TCP并发服务器、循环服务器、客户端 UDP服务器、客户端

    本篇将详细介绍TCP并发服务器、循环服务器、客户端以及UDP服务器和客户端的基本概念和实现。 首先,TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。它的主要特点是通过三次握手建立连接,并在数据传输...

    tcp并发服务器

    TCP并发服务器是网络编程中的一个重要概念,它是指服务器可以同时处理多个客户端连接请求的机制。在高并发场景下,为了高效地服务大量客户端,服务器必须具备处理并发的能力。本篇将详细探讨TCP并发服务器的工作原理...

    多路复用IO以及TCP并发服务器的实现(练习)

    在计算机网络编程中,"多路复用IO"和"TCP并发服务器"是两个关键概念,它们对于构建高效、可扩展的网络服务至关重要。这里,我们将深入探讨这两个主题,并通过提供的文件名,我们可以推断出这是一个实践项目,旨在...

    RT-Thread下TCP并发服务器模型-多线程TCP服务器.rar_RT-THREAD + STM32_RT-Thread_r

    在本文中,我们将深入探讨如何在RT-Thread操作系统下实现一个基于STM32微控制器的TCP并发服务器模型,特别关注多线程技术的应用。RT-Thread是一个轻量级、高效且功能丰富的实时操作系统,适用于各种嵌入式系统,包括...

    C语言 TCP并发服务器 员工管理系统

    使用epoll实现TCP并发服务器,管理员可以对员工进行管理,添加员工,删除员工,修改员工信息和查找员工信息和历史记录; 1)服务器负责管理所有员工表单(以数据库形式),其他客户端可通过网络连接服务器来查询员工...

    基于Socket API编程接口实现的TCP并发服务器

    本程序基于Socket API编程接口实现的作为TCP并发服务器使用 ,能够同时接受多个客户端的连接,连接后不断的给客户端发送字符串。固件程序为TCP服务器,默认IP为192.168.1.30,端口19。通过修改MEMP_NUM_NETCONN的值...

    TCP并发服务器-采用windows多线程,WINSOCK

    在本文中,我们将深入探讨如何使用Windows多线程和Winsock库来实现一个TCP并发服务器。TCP并发服务器是指能够同时处理多个客户端连接请求的服务端程序,这种能力是通过多线程技术来实现的。 首先,我们需要引入必要...

    Linux下tcp并发服务器的几种设计的模式套路

    ### Linux下TCP并发服务器的设计模式详解 在现代网络通信领域,TCP并发服务器是处理大量并发连接请求的关键技术之一。为了适应不同的应用场景与需求,Linux环境下存在多种TCP并发服务器的设计模式。下面将详细介绍...

    Linux下tcp并发服务器的几种设计的模式套路.doc

    在Linux环境下,设计TCP并发服务器时,通常有多种模式可供选择,每种模式都有其特定的优势和适用场景。以下是对这些模式的详细说明: 1. 单进程单线程模式: 这种模式是最基础的设计,服务器在接收新连接后,会在同...

    1.16 第二章+第三章 TCP和UDP基础通信模型day2+TCP并发服务器day1

    1.16 第二章+第三章 TCP和UDP基础通信模型day2+TCP并发服务器day1

    tcp并发通信

    TCP并发通信是指在一个服务端程序中同时处理多个客户端连接请求的能力,这对于构建高性能的服务器至关重要。本文将深入探讨如何在Linux环境下,使用C语言和select系统调用来实现TCP并发通信。 首先,TCP并发通信的...

    16030110032_张瑞_网络应用程序设计实验.zip

    实验内容:在linux平台上实现1个TCP并发服务器,至少可以为10个客户端同时提供服务。 2. 进程间的协调通信(4学时) 掌握进程的概念、进程间通信的基本原理、集成间通信的主要类型和各自的特点。实验内容:在linux平台...

    基于stm32f407+ucos-iii+lwip1.4.1的tcp server并发服务器完美解决例程

    在本文中,我们将深入探讨如何使用STM32F407微控制器,结合uCOS-III实时操作系统和LWIP1.4.1轻量级网络库,构建一个高效的TCP并发服务器。STM32F407是一款强大的ARM Cortex-M4内核微控制器,广泛应用于嵌入式系统...

    tcp select 并发服务器

    在Linux系统中,TCP并发服务器的设计是一个重要的编程实践,它涉及到网络编程和系统调用的使用。本项目采用I/O复用技术中的`select`函数来实现一个高效的并发服务器,这是处理大量并发连接请求的一种常见策略。下面...

    tcp_server_v1.rar_linux TCP并发_linux tcp server

    TCP并发服务器是指能够同时处理多个客户端连接请求的服务器,这对于高并发的网络应用至关重要。本项目“tcp_server_v1.rar”提供了一个基础的Linux TCP并发服务器实现,主要涉及以下知识点: 1. **套接字编程**:在...

    Linux-select-TCP.rar_C++并发编程_LINUX TCP _TCP客户端_linux C++ TCP_并发

    本文将深入探讨如何在Linux环境下使用C++实现TCP并发服务器和客户端的编程。 首先,我们要了解TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP通过三次握手建立连接,确保数据的...

Global site tag (gtag.js) - Google Analytics