struct sockaddr 和 struct sockaddr_in 这两个结构体用来处理网络通信的地址. // 以下是 IPv4 的定义 struct sockaddr { unsigned short sa_family; // 2 bytes address family, AF_xxx ]; // 14 bytes of protocol address }; struct sockaddr_in { short sin_family; // 2 bytes e.g. AF_INET…
sockaddr sockaddr 是通用的socket地址,具体到Internet socket,用下面的结构,二者可以进行类型转换 sa_family是地址家族,一般都是"AF_xxx"的形式.通常大多用的是都是AF_INET,代表TCP/IP协议族 sa_data是14字节协议地址. 此数据结构用做bind.connect.recvfrom.sendto等函数的参数,指明地址信息.但一般编程中并不直接针对此数据结构操作,而是使用另一个与sockaddr等价的数据结构 struct…
sockaddr结构体 sockaddr的缺陷: struct sockaddr 是一个通用地址结构,这是为了统一地址结构的表示方法,统一接口函数,使不同的地址结构可以被bind() , connect() 等函数调用:sa_data把目标地址和端口信息混在一起了 struct sockaddr {       unsigned short sa_family; char sa_data[14];                   };  sa_family是通信类型,最常用的值是 "AF_I…
1. 什么是socket socket可以看成是用户进程与内核网络协议栈的编程接口.TCP/IP协议的底层部分已经被内核实现了,而应用层是用户需要实现的,这部分程序工作在用户空间.用户空间的程序需要通过套接字来访问内核网络协议栈. 套接口是全双工的通信,它不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信. 套接字还可以异构系统间进行通信,异构系统指的是在硬件或软件上有所差别的系统,例如安卓系统的手机与windows系统的PC机上都可以实现QQ通信,套接字可以实现在这两个设备上的…
socket网络编程中read与recv区别 1.read 与 recv 区别 read 原则: 数据在不超过指定的长度的时候有多少读多少,没有数据则会一直等待.所以一般情况下:我们读取数据都需要采用循环读的方式读取数据,因为一次read 完毕不能保证读到我们需要长度的数据,read 完一次需要判断读到的数据长度再决定是否还需要再次读取. recv 原则:        recv 中有一个MSG_WAITALL 的参数:                recv(sockfd, buff, buf…
socket相关程序从Windows移植到Linux下需要注意的: 1)头文件 Windows下winsock.h/winsock2.h Linux下sys/socket.h 错误处理:errno.h 2)初始化 Windows下需要用WSAStartup Linux下不需要 3)关闭socket Windows下closesocket(...) Linux下close(...) 4)类型 Windows下SOCKET Linux下int 如我用到的一些宏: #ifdef WIN32 typed…
socket编程中write.read和send.recv之间的区别   http://blog.csdn.net/petershina/article/details/7946615 一旦,我们建立好了tcp连接之后,我们就可以把得到的fd当作文件描述符来使用.由此网络程序里最基本的函数就是read和write(int fd, const void*buf,size_t nbytes);write的返回值大于0,表示写了部分或者是全部的数据. 这样我们用一个while循环来不停的写入,但是循环…
python 编写server的步骤: 1. 第一步是创建socket对象.调用socket构造函数.如: socket = socket.socket( family, type ) family参数代表地址家族,可为AF_INET或AF_UNIX.AF_INET家族包括Internet地址,AF_UNIX家族用于同一台机器上的进程间通信. type参数代表套接字类型,可为SOCK_STREAM(流套接字)和SOCK_DGRAM(数据报套接字). 2. 第二步是将socket绑定到指定地址.这…
1. TCP 基本认识 TCP 头部格式 为什么需要 TCP 协议?TCP 工作在哪一层? 什么是 TCP ? 什么是 TCP 连接? 如何唯一确定一个 TCP 连接呢? 有一个 IP 的服务器监听了一个端口,它的 TCP 的最大连接数是多少? 2. TCP 与 UDP 区别 UDP 基本认识 TCP 与 UDP 区别 TCP 与 UDP 应用场景 3. TCP 三次握手 三次握手过程和状态变迁 如何在 Linux 系统中查看 TCP 状态? 为什么是三次握手?不是两次.四次? 4. TCP 四…
如无其它说明,本文所指Linux均表示2.6内核Linux,GCC编译器,Windows均表示Windows XP系统,Visual Studio 2005 sp1编译环境. 下面大概分几个方面进行罗列: Linux要包含 [cpp] #include <sys/socket.h>   #include <netinet/in.h>   #include <netdb.h>   #include <arpa/inet.h>  等头文件,而windows下则是…