head first c<11>初探网络编程下

上一篇博文可以实现基本的网络通信,但是只能服务给一个人,我们可以通过给每个客户端fork()一个子进程,来实现一对多的服务。

方法:

客户端连到服务器以后,服务器启动一个新创建的套接字对话,也就是说父进程可以继续连接下一个客户端,而子进程来需要处理

accept()创建的副套接字,实现通信功能。父进程克隆子进程后可以关闭副套接字close(connect_d),而子进程可以关闭主监听套接

字close(listener_d)。

说了半天就是,一个只负责拉客,一个只负责接客.

while(1)

{

    int connect_d = accept(listener_d,(struct sockaddr *)&client_addr,&address_size); 

    if (connect_d == -1) 

        error("无法打开副套接字");

    if(!fork())  //如果返回0,说明我在子进程中

   {     

      close(listener_d); //关闭监听套接字

      process();   //通信过程

      close(connect_d); //结束后,关闭通信套接字

      exit(0);                //一旦通信结束,子进程就应该退出程序,以防进入服务器的主循环

   }

   close(connect_d);  // 父进程关闭通信套接字,继续准备连接下一个客户端,然后再fork()

}

总结

<1>socket()创建套接字

<2>服务器四部曲:

B=bind();

L=listen();

A=accept();

B=开始对话;

<3>fork()克隆子进程,同时处理多个客户端

head first c<11>初探网络编程下

时间: 2024-08-10 22:29:35

head first c<11>初探网络编程下的相关文章

head first c&lt;11&gt;初探网络编程上

服务器连接网络四部曲. 为了与外界沟通,c程序用数据流读写字节,比较常用的数据流有标准输入.标准输出.文件等. 如果想写一个与网络通信的程序,就需要一种新的数据流----------套接字. 使用套接字与客户端程序通信前,服务器需要历经四个阶段:绑定.监听.接受.开始. 1.绑定端口 计算机可能同时运行多个服务器程序,为了放置不同的对话混淆,每项服务必须使用不同的端口(port).端口就好像电视频道, 用不同的频道接受不同的节目. 服务器在启动时,需要告诉操作系统将要使用哪个端口,这个过程叫端口

初探网络编程

网络编程是Linux开发中的重要部分,Linux环境网络编程是基于Socket的C语言编程,Socket本意是插座,它在网络中描述不同计算机之间通信的方式.网络通信中可以使用TCP或者UDP协议,对于我们来说不会太关心协议本身的细节,而是更关注不同主机之间传输的过程,因此制定了一种用于网络传输数据的编程接口,称为套接字(Socket). Socket编程接口内容很多,我自己看了一部分之后感觉学习过程中需要分析数据通信的过程,理解网络中的基础知识才不至于混肴.下面是一些网络编程的基本操作. 1.网

java基础11( 网络编程)

网络编程三要素 IP:一个计算机的标识 端口:应用程序都会对应一个端口,用来进行通信,有效端口:0~65535,其中0~1024系统使用或保留端口. 协议:两种协议(UDP,TCP) 特殊IP地址:127.0.0.1本地回环地址用来做一些本地测试 pingIP地址; 用来检测本机是否可以和指定的IP地址的计算机可以进行正常通讯 ipconfig     用来查看IP地址 xxx.xxx.xxx.255  广播地址 端口: 物理端口:物理设备对应的端口, 网卡口 逻辑端口:用来标示我们的计算机上的

11.2网络编程

网络编程:其实就是在学socket socket是什么? 翻译过来称为套接字是对底层的 TCP IP UDP 等网络协议进行封装 使得上层的应用程序开发者,不用直接接触这对复杂,丑陋的协议 在程序员的言论,他就是一个封装好的模块! 要完成网络通讯,只需要使用系统提供的socket模块就行 TCP和UDP是传输层最常见的协议 主要控制传输数据的方式 TCP的传输方式 优点:通过三次握手来与服务器建立连接 可以保证数据的完整性 a机器给b机器发送数据包 要求b机器必须立即返回一个确认包 a机器会等待

head first c&amp;lt;11&amp;gt;初探网络编程上

server连接网络四部曲. 为了与外界沟通,c程序用数据流读写字节.比較经常使用的数据流有标准输入.标准输出.文件等. 假设想写一个与网络通信的程序.就须要一种新的数据流----------套接字. 使用套接字与client程序通信前,server须要历经四个阶段:绑定.监听.接受.開始. 1.绑定port 计算机可能同一时候执行多个server程序.为了放置不同的对话混淆.每项服务必须使用不同的port(port).port就好像电视频道, 用不同的频道接受不同的节目. server在启动时

11.Socket网络编程

本节内容 Socket介绍 Socket参数介绍 基本Socket实例 Socket实现多连接处理 通过Socket实现简单SSH 通过Socket实现文件传送 作业:开发一个支持多用户在线的FTP程序 1. Socket介绍 概念 A network socket is an endpoint of a connection across a computer network. Today, most communication between computers is based on th

Python之路(十四):网络编程基础

Python基础之网络编程 学习网络编程之前,要对计算机底层的通信实现机制要有一定的理解. OSI 互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层 可以将应用层,表示层,会话层并作应用层,从tcp/ip五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议 就理解了整个互联网通信的原理. 首先,用户感知到的只是最上面一层应用层,自上而下每层都依赖于下一层,所以我们从最下一层开始切入,比较好理解 每层都运行特定的协议,越往上越靠近用户,越往下越靠近硬件. 物理层 物

linux网络环境下socket套接字编程(UDP文件传输)

今天我们来介绍一下在linux网络环境下使用socket套接字实现两个进程下文件的上传,下载,和退出操作! 在socket套接字编程中,我们当然可以基于TCP的传输协议来进行传输,但是在文件的传输中,如果我们使用TCP传输,会造成传输速度较慢的情况,所以我们在进行文件传输的过程中,最好要使用UDP传输. 在其中,我们需要写两个程序,一个客户端,一个服务端,在一个终端中,先运行服务端,在运行客户端,在服务端和客户端都输入IP地址和端口号,注意服务端和客户端的端口号要相同,然后选择功能,在linux

六星经典CSAPP-笔记(11)网络编程

六星经典CSAPP-笔记(11)网络编程 参照<深入理解计算机系统>简单学习了下Unix/Linux的网络编程基础知识,进一步深入学习Linux网络编程和TCP/IP协议还得参考Stevens的书. 1.网络基础 (略过,待补充) 2.IP地址 2.1 IP地址的表示 IP地址是一个无符号的32位整数.Linux网络程序使用下面这种IP地址结构存储IP地址: /* Internet address structure */ struct in_addr { unsigned int s_add