码莎拉蒂 .
这个作者很懒,什么都没留下…
展开
-
linux之网络编程ICMP校验算法
1、ICMP校验算法代码 unsigned short cal_chksum(unsigned short *addr,int len) { int nleft = len; int sum = 0; unsigned short *w = addr; unsigned short answer =原创 2017-03-01 15:46:15 · 2633 阅读 · 0 评论 -
linux网络编程之用一张图片说明函数inet_ntop、inet_pton、inet_addr、inet_ntoa 、inet_aton函数之间的关系
1、inet_ntop、inet_pton、inet_addr、inet_ntoa 、inet_aton函数之间的关系2、inet_ntop、inet_pton函数的源代码1、inet_pton函数源码int inet_pton(int family, const char *strptr, void *addrptr){ if (family ==原创 2017-03-10 23:56:25 · 4368 阅读 · 0 评论 -
unix网络编程之UNIX Domain Socket IPC (sockaddr_un )
socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX Domain Socket。虽然网络socket也可用于同一台主机的进程间通讯(通过loopback地址127.0.0.1),但是UNIX Domain Socket用于IPC更有效率:不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另转载 2017-03-21 20:25:00 · 2966 阅读 · 0 评论 -
linux网络编程之并发服务器的三种实现模型 (超级经典)
转载 : http://blog.csdn.net/tennysonsky/article/details/45671215服务器设计技术有很多,按使用的协议来分有 TCP 服务器和 UDP 服务器,按处理方式来分有循环服务器和并发服务器。循环服务器与并发服务器模型在网络程序里面,一般来说都是许多客户对应一个服务器(多对一),为了处理客户的请求,对服务端的程序就提出转载 2017-03-12 23:48:46 · 5863 阅读 · 2 评论 -
linux网络编程之用select方法实现io复用(基于udp)
1、基本概念 IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合: (1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。 (2)当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。 (3)如果一个TCP服务器既要处理监听套接口,又要处理已连接套原创 2017-03-13 23:16:59 · 6204 阅读 · 0 评论 -
linux网络编程之setsockopt()函数来设置socket状态以及getsockopt函数只用总结
1、setsockopt函数头文件:#include <sys/types.h> #include <sys/socket.h>定义函数:int setsockopt(int s, int level, int optname, const void * optval, ,socklen_toptlen);函数说明:setsockopt()用来设置...原创 2017-03-14 14:28:25 · 5324 阅读 · 0 评论 -
linux网络编程之用一张图片说明套接口常用函数
原创 2017-03-14 15:03:51 · 2461 阅读 · 0 评论 -
linux网络编程之慢系统调用被信号中断产生EINTR错误怎么解决总结
1、介绍慢系统调用该术语适用于那些可能永远阻塞的系统调用。永远阻塞的系统调用是指调用永远无法返回,多数网络支持函数都属于这一类。如:若没有客户连接到服务器上,那么服务器的accept调用就会一直阻塞。慢系统调用可以被永久阻塞,包括以下几个类别:(1)读写‘慢’设备(包括pipe,终端设备,网络连接等)。读时,数据不存在,需要等待;写时,缓冲区满或其他原因,需要等待。读写磁盘文件一般不会阻塞...转载 2017-03-14 22:53:50 · 6289 阅读 · 7 评论 -
linux网络编程之用select函数实现io复用(基于TCP)引发的思考
1、基本概念 IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合: (1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。 (2)当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。 (3)如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复原创 2017-03-14 23:49:54 · 3510 阅读 · 27 评论 -
linux网络编程之Listen函数参数介绍
1、listen()函数介绍listen函数使用主动连接套接口变为被连接套接口,使得一个进程可以接受其它进程的请求,从而成为一个服务器进程。在TCP服务器编程中listen函数把进程变为一个服务器,并指定相应的套接字变为被动连接。listen函数在一般在调用bind之后-调用accept之前调用,它的函数原型是:#includeint listen(int sockfd, int b原创 2017-03-15 15:23:06 · 3501 阅读 · 0 评论 -
linux网络编程之用epoll实现io复用(基于tcp)
1、epoll介绍 epoll是在2.6内核中提出的,是之前的select和poll的增强版本。相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需一次。2、epollAPIepoll操作过程需要三个接口原创 2017-03-17 10:04:33 · 2856 阅读 · 0 评论 -
linux网络编程之一般应用采用的协议和不同套接字的地址结构以及用户进程和内核通过哪些函数传递套接字的地址结构
1、一般应用采用的协议2、不同套接字的地址结构3、用户进程和内核通过哪些函数传递套接字的地址结构从进程到内核传递套接字的地址结构函数有3个 bind、connect、sendto函数从内核到进程传递套接字的地址结构函数有4个函数accept、recvfrom 、getsockname 、getpeername原创 2017-03-10 22:35:33 · 2462 阅读 · 0 评论 -
linux网络编程之怎么配置好unp.h文件
1、获取unp源码下载地址:http://www.unpbook.com/src.html然后用tar -zxvf unpv13e.tar.gz命令解压2、进入unpv13e目录执行configurecd unpv13e ,然后执configure文件3、打开README文件,使用make命令打开README文件上面写原创 2017-03-09 21:58:16 · 9219 阅读 · 1 评论 -
linux网络编程之地址结构sockaddr和sockaddr_in的区别
1、介绍sockaddr结构体struct sockaddr在/usr/include/linux/socket.h中定义struct sockaddr { unsigned short sa_family; // 2 bytes address family, AF_xxx char sa_data[14]; // 14 by原创 2017-02-22 11:39:50 · 3770 阅读 · 0 评论 -
linux网络编程之网络字节序、主机字节序、大端、小端
1、主机字节序介绍 不同的CPU有不同的字节序类型 这些字节序是指整数在内存中保存的顺序 这个叫做主机字节序,存储方式有2种 1)、大端模式 大端模式(Big-Endian)就是高位字节排放在内存的低地址端(即该值的起始地址),低位字节排放在内存的高地址端 2 ) 、小端模式原创 2017-02-22 13:34:41 · 6395 阅读 · 0 评论 -
linux网络编程之inet_addr和inet_ntoa使用总结
1、介绍inet_addr函数inet_addr函数转换网络主机地址(如192.168.1.10)为网络字节序二进制值,如果参数char *cp无效,函数返回-1(INADDR_NONE),这个函数在处理地址为255.255.255.255时也返回-1,255.255.255.255是一个有效的地址,不过inet_addr无法处理in_addr_t inet_addr(const原创 2017-02-22 20:13:26 · 32297 阅读 · 1 评论 -
linux网络编程之用socket实现简单客户端和服务端的通信(基于TCP)
一、介绍基于TCP协议通过socket实现网络编程常用API1、读者如果不是很熟悉,可以先看我之前写的几篇博客,有socket,地址结构的理解,更加方便读者理解地址分别是:1)、http://blog.csdn.net/u011068702/article/details/564799272)、http://blog.csdn.net/u011068702/article/de原创 2017-02-23 20:55:46 · 27341 阅读 · 29 评论 -
linux网络编程之套接字(套接口)、ip、端口理解
1、套接字、ip、端口介绍1)、套接字源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。其用于标识客户端请求的服务器和服务。它是网络通信过程中端点的抽象表示,包含进行网络通信必需的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。或者说,套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机原创 2017-02-22 10:32:59 · 10204 阅读 · 0 评论 -
linux网络编程之用socket实现简单客户端和服务端的通信(基于UDP)
1、sendto和recvfrom函数介绍sendto(经socket传送数据)相关函数 send , sendmsg,recv , recvfrom , socket表头文件 #include #include 定义函数 int sendto ( int s , const void * msg, int l原创 2017-02-23 21:13:54 · 14364 阅读 · 18 评论 -
ip校验和及udp校验和的计算方法
一、ip校验和的计算: 计算方法: 1. ip包头(共20个字节)按照每16个bit作为一个值依次进行相加 2. 将计算结果的进位加到低16位上 3. 将结果取反 ip包头的内存内容 eg: 45 00 00 20 0F B8 00 00 80 11 00 00 C0 A8 0A 9F C0 A8 0A C7将 0x4500 0x0020 0x0FB8转载 2017-03-03 22:08:59 · 12929 阅读 · 0 评论 -
linux网络编程之inet_pton和inet_ntop函数
Linux下这2个IP地址转换函数,可以在将IP地址在“点分十进制”和“整数”之间转换 而且,inet_pton和inet_ntop这2个函数能够处理ipv4和ipv6。算是比较新的函数了。 1、inet_pton函数原型如下[将“点分十进制” -> “整数”] #include #include #include int inet_p原创 2017-03-08 01:08:37 · 14426 阅读 · 0 评论 -
linux网络编程之用多线程实现客户端到服务端的通信(基于udp)
1、开启一个线程接受数据,主线程发送数据的代码#include #include #include #include #include #include #include #include #include #include #include //接收线程,负责消息并且显示void *recv_thread(void* arg){ int udp_fd = (原创 2017-03-08 23:30:09 · 7638 阅读 · 0 评论 -
linux网络编程之IP协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)和TCP、UDP协议头结构总结
首先声明,这篇博客是几篇博客转载然后总结在一起的,只当是学习笔记,不在意是什么原创和转载了,学到东西就好。1、IP协议首部格式(IP协议处余网络层)IP数据报首部图片格式:最高位在左边,记为0 bit;最低位在右边,记为31 bit头部代码结构如下//定义IP首部typedef struct _iphdr{unsigned char h_lenv原创 2017-02-26 22:25:44 · 5057 阅读 · 2 评论 -
linux网络编程之sockaddr_in和in_addr区别
1、struct in_addrstruct in_addr就是32位IP地址。 struct in_addr { union { struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b; struct { u_short s_w1,s_w2; } S_un_w;原创 2017-03-09 21:12:20 · 5553 阅读 · 0 评论 -
linux网络编程之SCTP套接字常用接口
SCTP 套接字接口当 socket() 调用为 IPPROTO_SCTP 创建套接字时,它会调用特定于 SCTP 的套接字创建例程。针对 SCTP 套接字执行的套接字调用会自动调用相应的 SCTP 套接字例程。在一对一套接字中,每个套接字都对应一个 SCTP 关联。可以通过调用以下函数来创建一对一套接字:socket(AF_INET[6], SOCK_STREAM, IPPR转载 2017-03-17 11:03:23 · 3572 阅读 · 0 评论