Linux网络编程
文章平均质量分 73
Linux网络编程
柚见
这个作者很懒,什么都没留下…
展开
-
TCP/IP网络编程学习(13):epoll
再看select代码while(1){ cpy_reads=reads; timeout.tv_sec=5; timeout.tv_usec=5000; if((fd_num=select(fd_max+1, &cpy_reads, 0, 0, &timeout))==-1) break; if(fd_num==0) continue; for(i=0; i<fd_max+1; i++) { if(FD_ISSET(i, &a.原创 2021-09-12 17:31:47 · 280 阅读 · 0 评论 -
TCP/IP网络编程学习(12):I/O复用
基于多进程方式的服务端中一个进程服务一个客户端,但是创建进程需要的代价极大,需要大量的内存和运算,因此对于高并发服务器来说不是最好的方案。I/O复用技术就是解决在不创建新进程的同时向多个客户端提供服务。理解复用为了提高物理设备的效率,用最少的物理要素传递最多数据时使用的技术 。比如三个人用纸杯相互通信可以建立如下模型:此时需要6个杯子和3根线。为了完成对话,说话时要对着两个杯子。并且通信链路是1对1的。如果设计成下面这种形式:每个人使用一个杯子和他人通信。连接到杯子的电话线被复用了。为了.原创 2021-09-11 15:19:51 · 198 阅读 · 0 评论 -
TCP/IP网络编程学习(11):管道通信
进程通信是指,两个不同进程之间可以相互交换数据。由于fork产生的子进程复制了父进程的所有信息,但是也没有进行内存空间共享。需要使用别的方法。通过管道进行进程数据交换管道属于操作系统,进程只是拥有管道的文件描述符。int pipe(int fd[2);//成功返回 0,失败-1//fd[0] 管道出口, 接收数据文件描述符//fd[1] 管道入口,写入数据文件描述符进程创建管道之后拥有其两个描述符。可以读写管道的数据,父进程如需和子进程进行数据交换,那么fork一个子进程即可。此时父进.原创 2021-09-11 13:56:08 · 404 阅读 · 0 评论 -
TCP/IP网络编程学习(10):利用信号处理技术消灭僵尸进程和基于多任务的并发处理器
利用信号处理技术消灭僵尸进程子进程终止时产生SIGCHLD信号。就可以捕捉信号终止子进程。#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <signal.h>#include <sys/wait.h>void read_childproc(int sig){//子进程终止调用该函数 int status; pid_t id=waitpid(-1原创 2021-09-10 22:51:27 · 161 阅读 · 0 评论 -
TCP/IP网络编程学习(9):僵尸进程及信号处理
僵尸进程及信号处理多进程服务器:通过创建多个进程提供服务多路复用服务器:通过捆绑并统一管理I/O对象提供服务 。多线程服务器:通过生成与客户端等量的线程提供服务 。进程:运行着的程序,被从磁盘加载到内存并有运行权限。拥有 2 个运算设备的 CPU 称作双核( Daul ) CPU ,拥有 4 个运算器的 CPU称作 4 核(Quad )C PU 。也就是说, 1 个 CPU 中可能包含多个运算设备(核)。核的个数与可同时运行的进程数相同。采用多线程技术后,一个进程的线程可以在多核上运行原创 2021-09-10 17:56:25 · 287 阅读 · 0 评论 -
TCP/IP网络编程学习(8):套接字属性设置
套接字可设置多种特性如:发送窗口和接收窗口大小、最大序列号、TTL等信息。套接字设置是分层的,可以通过参数设置IP层,TCP层,和套接字的相关选项。每一层的可设置参数如下:套接字属性设置IP层TCP层:读取套接字属性:int getsockopt(int sock, int level, int optname, void *optval, socklen_t *optlen);//sock: 用于查看选项套接字文件描述符。//level: 要查看的可选项的协议层。//optname:原创 2021-09-10 12:12:07 · 486 阅读 · 0 评论 -
TCP/IP网络编程学习(7):DNS
DNS: 对IP地址和域名进行相互转换的系统 ,其核心是DNS服务器 。什么是域名提供网络服务的服务器端也是通过IP地址区分的,但几乎不可能以非常难记的IP地址形式交换服务器端地址信息 。 因此,将容易记 、 易表述的域名分配并取代IP地址 。DNS服务器完成域名(www.baidu.com)到IP地址(182.61.200.7)的转换。所有计算机中都记录着默认DNS服务器地址,就是通过这个默认DNS服务器得到相应域名的IP地址信息 。 在浏览器地址栏中输入域名后,浏览器通过默认DNS服务器获取.原创 2021-09-10 10:13:59 · 153 阅读 · 0 评论 -
TCP/IP网络编程学习(6):套接字的断开
单方面断开之前讨论的close函数意味着连接完全的断开,既不能收数据也不能发数据。主机A发送完最后 的数据后,调用 close函数断开了连接,之后主机A元法再接收主机B传输的数据 。实际上,是完全无法调用与接收数据相关的函数 。 最终,由主机B传输的、 主机A必须接收的数据也销毁了 。为了解决这类问题,“只关闭一部分数据交换中使用的流” ( Half-close ) 的方法应运而生 。 断开一部分连接是指,可以传输数据但无法接收 ,或可以接收数据但无法传输。 顾名思义就是只关闭流的一半 。套接字和流原创 2021-09-09 21:46:32 · 382 阅读 · 0 评论 -
TCP/IP网络编程学习(5):实现基于UDP的服务端/客户端
UDP套接字的特点UDP通信与传统的信件通信类似。寄件人填写好地址(IP)和收信人姓名(Port)后将信件投递到邮筒(交付给网络层)。不保证信件的的准确到达。提供的是不可靠的传输服务。考虑可靠性TCP肯定好于UDP。但是UDP相对于TCP具有以下优点。不用连接,无连接时延,实时性高不用维护连接状态,如确认号,序列号,流量控制,拥塞控制头部开销小流控制是区分UDP和TCP的最重要的标志 。 但若从TCP中除去流控制,所剩内容也屈指可数 。也就是说,TCP的生命在于流控制 。IP的作用就是让离原创 2021-09-09 21:15:05 · 189 阅读 · 0 评论 -
TCP/IP网络编程学习(4):实现基于TCP的服务端/客户端
# TCP服务端默认调用顺序socket(): 创建套接字bind() : 分配套接字的地址listen() : 等待连接请求状态accept() : 允许连接read()/write(): 交换数据close(): 关闭连接我们已调用 bind函数给套接字分配了地址,接下来就要通过调用listen函数进入等待连接请求状态 。 只有调用了listen函数,客户端可发出连接请求。换言之,这时客户端才能调用connect函数(若提前调用将发生错误)。#include <sys/so原创 2021-09-09 15:17:53 · 303 阅读 · 0 评论 -
TCP/IP网络编程学习(1):理解网络编程和套接字
网络程序就是编写程序两台连网的计算机进行数据的交换。数据传输使用网络。使用socket部件编写数据传输软件。套接字就是计算机用来连接网络的工具。服务端调用socket函数创建套接字#include <sys/socket. h>int socket(int domain, int type, int protocol);//成功时返回文件描述符,失败时返回-10调用bind函数给套接字分配地址信息(IP地址和端口号)。#include <sys/socket.h>原创 2021-09-08 16:04:06 · 153 阅读 · 0 评论 -
TCP/IP网络编程学习(2):套接字类型及协议设置(socket函数)
进一步学习套接字函数socket创建套接字函数socket#include <sys/socket.h>int socket(int domain, int type, int protocol);//成功时返回文件描述符,失败时返回-1。domain: 套接字中使用的协议族( Protocol Famjly )信息。type : 套接字数据传输类型信息。protocol : 计算机间通信中使用的协议信息 。协议族(Protocol Family, PF)分为以下几类。重原创 2021-09-09 10:37:37 · 201 阅读 · 0 评论 -
基于Linux的文件操作
在Linux世界里,socket也被认为是文件的一种,因此在网络数据传输过程中自然可以使用文件I/O的相关函数。文件描述符是系统分配给文件或套接字的整数。默认分配的三个文件描述符:0 标准输入1 标准输出2 标准错误文件和套接字一般经过创建过程才会被分配文件描述符。文件描述符是程序员和操作系统沟通的桥梁。打开文件#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int o原创 2021-09-08 17:04:37 · 112 阅读 · 0 评论 -
TCP/IP网络编程学习(3):地址族与数据系列
网络地址A类地址:首位以0开始。B类地址:首位以10开始C类地址:首位以110开始端口号IP用于区分计算机,端口号用于区分应用程序。传输到计算机的网络数据,操作系统通过端口号分发给对用的套接字。端口号有16位构成,范围0-65535.但0-1023是知名端口号,一般分配给特定应用程序。另外,虽然端口号不能重复,但TCP套接字和UDP套接字不会共用端口号,所以允许重复 。 例如:如果某TCP套接字使用9190号端口,则其他TCP套接字就无法使用该端口号,但UDP套接字可以使用。数据传输目标地址原创 2021-09-09 13:10:06 · 433 阅读 · 0 评论