网络编程(1)
2016-04-06 21:04
183 查看
套接字
1.套接字地址结构套接字编程需要指定套接字的地址作为参数,不同的协议族有不同的地址结构定义方式。这些地址结构通常以sockaddr_开头,每一个协议族有一个唯一的后缀,例如对于以太网,其结构名称为sockaddr_in。
1.1 通用套接字地址结构
/*套接字地址结构*/ struct sockaddr{ sa_family_t sa_family; /*协议族*/ char sa_data[14]; /*协议族数据*/ }
上述类型sa_family_t其实是unsigned short类型。
1.2 实际使用的套接字地址结构
在网络程序设计中所使用的函数中几乎所有的套接字函数都用这个结构作为参数。以太网中,一般采用结构struct sockaddr_in进行设置,该结构定义如下:
/*以太网套接字地址结构*/ struct sockaddr_in{ u8 sin_len; /*结构sockaddr_in的长度*/ u8 sin_family; /*通常为AF_INET*/ u16 sin_port; /*16位的端口号,网络字节序*/ struct in_addr sin_addr; /*ip地址32位*/ char sin_zero[8]; /*未用*/ }
2.用户层和内核层交互过程
套接字参数中有部分参数是需要用户传入的,这些参数用来与linux内核进行通信,例如指向地址结构的指针。通常是采用内存复制的方法进行。向内核传入数据的函数有send(),bind()等,从内核得到数据的函数有accept(),recv()等。
相关文章推荐
- TCP三次握手的思考,为什么要有三次握手
- AVPlayer(网络音频资源)的封装
- 关于网络请求中无法访问HttpRequestBase
- HttpURLConnection与HttpClient区别及联系
- 写给后端程序员的HTTP缓存原理介绍
- HTTP状态码
- 神经网络
- TCP中的多线程
- tcp粘包分析
- HTTP头的Expires与Cache-control
- TCP三次握手与释放链接
- nginx js/css合并请求(nginx-http-concat-master)模块
- 网络编程
- 部署视频聊天系统:网络品质測试
- SpringMvc4.2.5 零配置出现 No mapping found for HTTP request with URI
- 简要对比下HTTP-DNS调度和302跳转调度之间的区别
- 使用Python编写简单网络爬虫抓取视频下载资源
- 聊聊iOS中TCP / UDP 协议
- Caffe 之 使用非图片的鸢尾花(IRIS)数据集(hdf5格式) 训练网络模型
- 基于循环神经网络(RNN)的端到端(end-to-end)对话系统