没有合适的资源?快使用搜索试试~ 我知道了~
Linux程序设计__技术技巧与项目实践网络编程第9章.pptx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 178 浏览量
2021-10-11
07:19:48
上传
评论
收藏 315KB PPTX 举报
温馨提示
![preview](https://dl-preview.csdnimg.cn/30998514/0001-60f952dd66d22965f286fd256469dd68_thumbnail.jpeg)
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
试读
46页
Linux程序设计__技术技巧与项目实践网络编程第9章.pptx
资源推荐
资源详情
资源评论
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/release/download_crawler_static/30998514/bg1.jpg)
第九章 网络编程
9.1 SOCKET 的概念
9.2 SOCKET 的建立与配置
9.3 SOCKET 的连接建立
9.4 数据传输
9.5 SOCKET 编程实例
9.6 PING 命令解析
9.7 实战技巧 光驱与软驱的加载方法
0
5
/
0
2
/
2
0
2
2
1
![](https://csdnimg.cn/release/download_crawler_static/30998514/bg2.jpg)
9.1 Socket 的概念
•
Socket 是 TCP/IP 协议传输层提供的接口或套接字,供用户编程访问
网络资源时的工具。 Socket 接口是 TCP/IP 网络的 API , socket 接口
定义了许多函数或例程,程序员用它们开发 TCP/IP 网络上的应用程
序。 TCP/IP 协议( Transmission Control Protocol/Internet
Protocol )是传输控制 / 网际协议,又叫网络通信协议,这个协议是
Internet 国际互联网络的基础。要学 Internet 上的 TCP/IP 网络编程,
必须理解 socket 接口。
•
Linux 的套接口通信模式与日常生活中的电话通信非常类似,套接字
代表通信线路中的端点,端点之间通过通信网络来相互联系。
•
Socket 接口设计者最先是将接口放在 Unix 操作系统里面的。如果了
解 Unix 系统的输入和输出,就很容易了解 socket 。网络的 socket 数
据传输是一种特殊的 I/O , socket 也是一种文件描述符。 Socket 也具
有一个类似于打开文件的函数调用 socket( ) ,该函数返 回一个整型的
socket 描述符,随后的连接建立、数据传输等操作都是通过该 socket
实现的。常用的 socket 类型有两种:流式
socket ( SOCK_STREAM )和数据报式
socket ( SOCK_DGRAM )。流式是一种面向连接的 socket ,针对
于面向连接的 TCP 服务应用;数据报式 socket 是一种无连接的
socket ,对应于无连接的 UDP 服务应用。
0
5
/
0
2
/
2
0
2
2
2
![](https://csdnimg.cn/release/download_crawler_static/30998514/bg3.jpg)
9.2 Socket 的建立与配置
•
为了建立 socket ,程序可以调用 socket 函数,该函数返
回一个类似于文件描述符的句柄。 socket 函数原型为:
•
int socket(int domain, int type, int protocol);
•
domain 指明所使用的协议族,通常为 PF_INET ,表示互
联网协议族( TCP/IP 协议族); type 参数指定 socket 的
类型: SOCK_STREAM 或 SOCK_DGRAM , socket 接
口还定义了原始 socket ( SOCK_RAW ),允许程序使
用底层协议; protocol 通常赋值为 0 。 socket() 调用返回
一个整型 socket 描述符,可在后面直接使用它。
•
Socket 描述符是一个指向内部数据结构的指针,它指向描
述符表入口。调用 socket 函数时, socket 执行体将“建立
一个 socket” ,这意味着为一个 socket 数据结构分配存储
空间。 Socket 执行体用来管理描述符表。
•
两个网络程序之间的一个网络连接包括五种信息:通信协
议、本地协议地址、本地主机端口、远端主机地址和远端
协议端口。 Socket 数据结构中包含这五种信息。
0
5
/
0
2
/
2
0
2
2
3
![](https://csdnimg.cn/release/download_crawler_static/30998514/bg4.jpg)
•
通过 socket 调用返回一个 socket 描述符后,在使用 socket 进行网络
传输以前,必须配置该 socket 。面向连接的 socket 客户端通过调用
connect( ) 函数在 socket 数据结构中保存本地和远端信息。无连接
socket 的客户端和服务端以及面向连接 socket 的服务端通过调用
bind( ) 函数来配置本地信息。
•
Bind 函数将 socket 与本机上的一个端口相关联,随后就可以在该端
口监听服务请求。 Bind 函数原型为:
•
int bind(int sockfd,struct sockaddr *my_addr, int addrlen);
•
其中的 sockfd 是调用 socket 函数返回的 socket 描述符 ,my_addr 是一
个指向包含有本机 IP 地址及端口号等信息的 sockaddr 类型的指针;
addrlen 常被设置为 sizeof(struct sockaddr) 。
•
struct sockaddr 结构类型是用来保存 socket 信息的:
•
struct sockaddr {
•
unsigned short sa_family; /* 地址族, AF_xxx */
•
char sa_data[14]; /* 14 个字节的协议地址 */
•
};
•
sa_family 一般为 AF_INET ,代表 Internet ( TCP/IP )地址族;
sa_data 则包含该 socket 的 IP 地址和端口号。
0
5
/
0
2
/
2
0
2
2
4
![](https://csdnimg.cn/release/download_crawler_static/30998514/bg5.jpg)
•
另外还有一种结构类型:
•
struct sockaddr_in {
•
short int sin_family; /* 地址族 */
•
unsigned short int sin_port; /* 端口号 */
•
struct in_addr sin_addr; /* IP 地址 */
•
unsigned char sin_zero[8]; /* 填充 0 保持与 struct sockaddr 大小相同
*/
•
};
•
这个结构更方便使用。 sin_zero 用来将 sockaddr_in 结构填充到与
struct sockaddr 同样的长度,可以用 bzero() 或 memset() 函数将其置
为零。指向 sockaddr_in 的指针和指向 sockaddr 的指针可以相互转
换,这意味着如果一个函数所需参数类型是 sockaddr 时,你可以在
函数调用的时候将一个指向 sockaddr_in 的指针转换为指向 sockaddr
的指针或相反。
•
使用 bind 函数时,可以用下面的赋值实现自动获得本机 IP 地址和随
机获取一个没有被占用的端口号:
•
my_addr.sin_port = 0; /* 系统随机选择一个未被使用的端口号 */
•
my_addr.sin_addr.s_addr = INADDR_ANY; /* 填入本机 IP 地址 */
0
5
/
0
2
/
2
0
2
2
5
剩余45页未读,继续阅读
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/be5e80819d6b4ffaa5fd41bdd5d73b0b_m0_53604762.jpg!1)
文档爱好者
- 粉丝: 8
- 资源: 29万+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
- labelImg安装指导书.docx
- 2023AI自有光-她经济消费新图鉴(2023)-百度营销.pdf
- 2022中国新能源汽车内容生态趋势洞察(1).pdf
- Docker技术:Docker安装与配置教程+运维技术+超融合+虚拟技术+云计算
- ZeRO Memory Optimizations Toward Training LLM.pdf
- 高效SQL语句编写(how-to-write-efficient-sql)
- ZeroTermux-release_sign.apk
- 非弹性斜碰撞物理课件模拟-HTML网页制作
- 软件测试学习日志-测试基础-day02
- 制作一个简单的进销存(库存管理)页面.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)