一、socket 简介
1、socket 是网络编程的一种接口,它是一种接口,它是一种特殊的I/O,用socket函数建立一个socket 连接,此函数返回一个整形的socket描述符,随后进行数据传输。
----------------------------------------------------------------- |
第一个参数指明了协议簇,目前支持5种协议簇,最常用的有AF_INET(IPv4协议)和AF_INET6(IPv6协议);第二个参数指明套接口类型,有三种类型可选:SOCK_STREAM(字节流套接口)、SOCK_DGRAM(数据报套接口)和SOCK_RAW(原始套接口);如果套接口类型不是原始套接口,那么第三个参数就为0。
通常socket分为三种类型:流式socket 数据报socket 原始socket
注意:一个完整的socket有一个本地唯一的socket号,由操作系统分配。最重要的是面向客户/服务器模型而设计的。
2、一个IP地址,一个通讯端口,就能确定一个通讯程序的位置,为此开发人员专门设计了一个套接结构,就是把网络程序中所用到的网络地址和端口信息放在一个结构体中。
一般套接口地址结构都以“socketaddr"开头。socket 根据所使用的协议的不同可分为TCP套接口和UDP套接口,又称为流式套接口和数据套接口。
UDP是一个无连接协议,TCP是个可靠的端对端协议。传输UDP数据包时,LINUX不知道也不关心它们是否已经安全到达目的地,而传输TCP数据包时,则应先建立连接以保证传输的数据被正确接收。
3、两个重要的数据类型:sockadd和sockaddr_in,这两个结构类型都是用来保存socket信息的,如IP地址、通信端口等。
3、TCP编程