UNIX网络编程
文章平均质量分 68
Damage233
这个作者很懒,什么都没留下…
展开
-
信号
参见:Linux C编程一站式学习 (一)信号的基本概念 为了理解信号,先从我们最熟悉的场景说起: 用户输入命令,在Shell下启动一个前台进程。 用户按下Ctrl-C,这个键盘输入产生一个硬件中断。 如果CPU当前正在执行这个进程的代码,则该进程的用户空间代码暂停执行,CPU从用户态切换到内核态处理硬件中断。 终端驱动程序将Ctr...转载 2018-07-16 13:44:25 · 405 阅读 · 0 评论 -
基于TCP协议的网络程序
参见:Linux C编程一站式学习 下图是基于TCP协议的客户端/服务器程序的一般流程(该图出自[UNPv13e]):图 37.2. TCP协议通讯流程 建立连接的过程(该图出自[UNPv13e]):图 37.3. 建立连接的过程 服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待,处于监听端口的状...转载 2018-07-20 10:00:13 · 650 阅读 · 0 评论 -
socket编程基础
参见:Linux C编程一站式学习 socket这个词可以表示很多概念: 在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯一标识网络通讯中的一个进程,“IP地址+端口号”就称为socket。 在TCP协议中,建立连接的两个进程各自有一个socket来标识,那么这两个socket组成的socket pair就唯一标识一个连接。socket本身有“插座”的意思,因此...转载 2018-07-19 20:54:58 · 257 阅读 · 0 评论 -
TCP客户端/服务器网络编程------多进程并发模型(附带实现)
同步阻塞迭代模型是最简单的一种IO模型。1)服务器端代码main函数#include "unp.h"intmain(int argc, char **argv){ int listenfd, connfd; pid_t childpid; socklen_t clilen; struct sockaddr_in cliaddr, servaddr; liste...原创 2018-07-13 18:43:43 · 1933 阅读 · 0 评论 -
(二)TCP客户端/服务器通信------poll函数
poll函数poll提供的功能与select类似,不过在处理流设备时,它能提供额外的信息。参数:1. fdarray:指向一个结构体数组的第一个元素的指针。每个数组元素都是一个pollfd结构,用于指定测试某个给定描述符fd的条件。 fd:被检查的描述符;events:测试条件(作为调用值);revents:描述符的返回状态(返回结果)poll识别三类数据:普通、优先级带和高级优先级带。2....原创 2018-07-13 14:52:31 · 1887 阅读 · 0 评论 -
(二)TCP客户端/服务器通信------select函数
select函数该函数允许进程指示内核等待多个事件中的任何一个发生,并只在有一个或多个事件发生或经历一段指定的时间后才唤醒它。也就是说,我们调用select告知内核对哪些描述符(就读、写或异常条件)感兴趣以及等待多长时间。我们感兴趣的描述符不局限于套接字,任何描述符都可以使用select来测试。参数:1. timeout:它告知内核等待所指定描述符中的任何一个就绪可花的最长时间。 1)永远等...原创 2018-07-12 15:27:07 · 2991 阅读 · 0 评论 -
线程
参见:Linux C编程一站式学习 1.线程的概念我们知道,进程在各自独立的地址空间中运行,进程之间共享数据需要用mmap或者进程间通信机制,本节我们学习如何在一个进程的地址空间中执行多个线程。有些情况需要在一个进程中同时执行多个控制流程,这时候线程就派上了用场,比如实现一个图形界面的下载软件,一方面需要和用户交互,等待和处理用户的鼠标键盘事件,另一方面又需要同时下载多个文件,等...转载 2018-07-18 15:36:03 · 1145 阅读 · 0 评论 -
(二)TCP客户端/服务器通信------I/O模型
前言对于一个套接字上的输入操作,第一步通常涉及等待数据从网络中到达。当所等待分组到达时,它被复制到内核中的某个缓冲区。第二步就是把数据从内核缓冲区复制到应用进程缓冲区。1.阻塞式I/O模型进程调用recvfrom,其系统调用直到数据报到达且被复制到应用进程的缓冲区中或者发生错误才返回。进程从调用recvfrom开始到它返回的整段时间内是被阻塞的。2.非阻塞I/O模型进程把一个套接字设置成非阻塞是在...原创 2018-07-12 10:24:50 · 595 阅读 · 0 评论 -
进程
参见:Linux C编程一站式学习 1.进程控制 1)fork函数: fork函数的特点概括起来就是“调用一次,返回两次”,在父进程中调用一次,在父进程和子进程中各返回一次。从上图可以看出,一开始是一个控制流程,调用fork之后发生了分叉,变成两个控制流程,这也就是“fork”(分叉)这个名字的由来了。子进程中fork的返回值是0,而父进程中fork的返回值则是子进程...转载 2018-07-18 10:37:30 · 381 阅读 · 0 评论 -
”linux学习之路” (感觉写的很好,更像是网络编程学习路线图)
转:https://www.oschina.net/question/587367_156024很多同学接触Linux不多,对Linux平台的开发更是一无所知。 而现在的趋势越来越表明,作为一个优秀的软件开发人员,或计算机IT行业从业人员, 掌握Linux是一种很重要的谋生资源与手段。 下来我将会结合自己的几年的个人开发经验,及对 Linux,更是类UNIX系统,及开源软件文化, 谈谈Linu...转载 2018-07-11 18:40:14 · 9777 阅读 · 3 评论 -
UNIX网络编程环境搭建(ubuntu系统)
1.unix网络编程卷1:套接字联网API(第三版) 源代码下载:http://www.unpbook.com/src.html2.解压下载的源码到某一目录(我的是:/home/damage/文档/unpv13e)3.切换到当前源码目录 4.依次执行下列命令./configure cd libmake cd ../libfreemake5.make libfree可能会出现错误解决方案:在...原创 2018-07-11 18:21:32 · 1063 阅读 · 0 评论 -
(一)TCP客户端/服务器通信------基础函数篇
1. 客户端和服务器程序流程图 2. 基本TCP套接字编程(1) Socket函数Socket函数:指定期望的协议族(IPv4、IPv6等)和套接字类型(字节流、数据报等),返回套接字描述符(成功时>0的整数) 参数:family:协议族;type:套接字类型;protocol:协议类型常数。(2) Bind函数Bind函数:为服务器绑定本地ip和端口,一般为通配ip地址和服务器众所周知端口...原创 2018-07-11 17:47:44 · 1717 阅读 · 0 评论 -
linux最常用的20个命令
转自:https://www.oschina.net/translate/useful-linux-commands-for-newbies?lang=chs&page=2# 1. ls命令ls命令是列出目录内容(List Directory Contents)的意思。运行它就是列出文件夹里的内容,可能是文件也可能是文件夹。 root@tecmint:~# lsA...转载 2018-07-15 09:59:24 · 1677 阅读 · 0 评论