TCP-拥塞控制机制
摘要:1、拥塞:计算机网络中的带宽,交换节点中的缓存和处理机制,都是网络资源。在某段时间内,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就会变坏。这种情况就叫做拥塞。拥塞发生的主要原因是网络能够提供的资源不足以满足用户的需求,着写资源包括缓存空间,链路带宽容量和中间节点的处理能力。由
阅读全文
tcp握手协议,四次挥手
摘要:1、三次握手 第一次握手,建立连接时候,客户端发送syn包(syn = j)到服务器,并进入syn_send状态,等待服务器确认;syn:同步序列号。 第二次握手:服务器收到syn包,必须确认客户的syn(ack = j+1),同时自己也发送一个syn包(syn = k),就是syn+ack包,此时
阅读全文
(3)基于linux的socket编程TCP半双工client-server聊天程序
摘要:所谓半双工通信,即通信的双方都可以实现接发数据,但是有一个限制:只能一方发一方收,之后交换收发对象。也就是所谓的阻塞式通信方式。 一、基本框架: 1、首先搞清楚我们进行编程所处的位置: TCP编程,具有可靠的传输的特性,而实现可靠传输的功能并非我们将要做的事,我们要做的就是在内核实现的基础上调用AP
阅读全文
linux下基于socket多线程并发通信的实现
摘要:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
阅读全文
(2)linux下的简单的socket通信实例
摘要:学习网络编程入手还是比较难的,看到后来发现还是没有想象中的那么难。如果你是新手,开始着手写代码,不写时不行的。看100遍也不如写一遍来的清楚。敲完之后带着问题去看书,这样会更有针对性。提高的速度是飞快的。 写这个博客之前,发现别人写的代码都是吧所有的代码以粘贴,并没有讲解每个函数的功能。我甚至不知道
阅读全文
(1)linux下C语言socket网络编程简历
摘要:这里给出在linux下的简单的socket网络编程实例,使用tcp协议进行通信,服务端进行监听,再收到client的链接之后,发送数据给client;client在接收到数据后打印出来,然后关闭。程序里有具体的说明,当中对具体的结构体和函数的实现能够参照其他资料。 程序说明:这里的server的po
阅读全文
linux下的c socket编程(4)--server端的继续研究
摘要:linux下的C socket编程(4) 延长server的生命周期: 在前面的一个个例子中,server在处理完一个链接之后便会立即结束掉自己,然而这种server并不科学,server因该使能够一直接受处理连接的,知道结束命令结束掉server。 实现这种情况的最简单的方法就是将accept()
阅读全文
linux下的c socket编程(1)--简介与client端的处理
摘要:1、介绍: socket是进程间的方式之一,是进程间的通信。这里说的进程并不一定是在同一台机器上也有可能是通过网络连接的不同机器上。只要他们之间建立了socket连接,那么数据便可以在机器之间进行双向的交流,直到连接断开为止。 2、socket的建立: 在我们接触实际的代码API之前,我们应该对基础
阅读全文
linux下简单的socket通信实例:
摘要:服务端: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 5
阅读全文
socket编程函数总结
摘要:1、创建socket: int socket( int domain , int type, int protocol ); int sockfd = socket(AF_INET,SOCK_STREAM,0); domain:即为协议域(family)。 type:指定socket类型。 常用的s
阅读全文
linux下的socket编程(2)--获取对方的ip地址
摘要:linux下的C socket编程(2) 获取域名对应的ip地址 经过上面的讨论,如果我们要向链接远程的服务器,我们需要知道对方的ip地址,系统函数gethostbyname便能够帮助我们实现这个目的。他能够获取域名对应的ip地址并且返回一个hostent类型的结果。其中包含了ip地址信息,它的头文
阅读全文
linux下的socket编程(3)--server端的简单示例
摘要:linux下的socket编程(3) server端的简单示例: 经过前面的client端的学习,我们已经知道了如何创建socket,所以接下来就是去绑定他到具体的一个端口上去。 绑定socket到一个端口上去 bind()函数可以将socket绑定一个端口上,client可以通过这个端口发起请求,
阅读全文
补充:memset透彻分析
摘要:在c语言中,经常要对内存进行操作,里面涉及到很多函数,但是memeset函数的使用有一点需要大家格外注意,这就是我遇到过的一个问题: 函数原型:void * memset(void * s ,int ch ,size_t n); 函数的功能是:将s所指向某一块内存的的前n个字节的内容全部设置为ch指
阅读全文
高级I/O函数
摘要:1、pipe函数: pipe函数用来创建一个管道,以实现进程之间通信。 #include<unistd.h> int pipe(int fd[2]); pipe函数的参数是一个包含两个int 类型整数的数组指针。该函数成功时返回0,并将一对打开的文件描述符值填入其参数指向的数组。如果失败,则返回-1
阅读全文
socket编程总结
摘要:本章是承前启后的一章,他探讨linux网络编程API与内核中TCP/IP协议族之间的关系,并为后续章节提供编程基础。我们将讨论linux网络API: 1、网络字节序和主机字节序 现代CPU累加器一次都能装载至少4个字节(32位机器),即一个整数。那么这4个字节在内存中的排列顺序将影响他被累加器装载成
阅读全文
socket编程
摘要:1、通用socket地址: socket网络编程接口中表示socket地址的是结构体sockaddr,其定义如下: 1 2 3 4 5 6 #include<bits/socket.h> struct sockaddr { sa_family_t sa_family; char sa_data[14
阅读全文
linux网络编程基础API(一)
摘要:1、套接字地址结构: ipv4套接字地址结构:struct sockaddr_in ,定义在<netinet/in.h> ipv6套接字地址结构:struct sockaddr_in6,同样定义在<netinet/in.h> 通用套接字地址1结构:struct sockaddr,定义在<sys/so
阅读全文
TCP/IP协议详解
摘要:一、网络基本层次: 1、数据链路层: 实现网卡接口的网络驱动程序,以往处理数据在物理媒介上的传输。数据链路层常用的协议有ARP(地址解析协议)和RARP(逆地址解析协议)。他们实现了ip地址和机器物理地址(mac地址,以太网,令牌环网,802.11无线网络都使用mac地址)之间的相互转换。 网络层使
阅读全文
linux高性能服务器编程--初见
摘要:面向服务器的应用开发一直是linux软件开发的重点,而linux高性能服务器应用的开发则是重点中的重点,软件开发工程师不仅需要深入钻研很多理论知识,还需要在实际的生产环境中积累经验。因此,不仅这方面的从业人员奇缺,而且这方面的图书资料也极为有限。 本书将分为三个部分:第一部分:对linux服务器编程
阅读全文