没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
学习 Linux 网络编程
这篇教程是用来介绍在 下编写网络程序的
系统的一个主要特点是他的网络功能非常强大。随着网络的日益普及,基于网络的
应用也将越来越多。在这个网络时代,掌握了 的网络编程技术,将令每一个人处于
不败之地,学习 的网络编程,可以让我们真正的体会到网络的魅力。想成为一位真
正的 ,必须掌握网络编程技术。
现在书店里面已经有了许多关于 网络编程方面的书籍,网络上也有了许多关于网络
编程方面的教材,大家都可以去看一看的。在这里我会和大家一起来领会 网络编程
的奥妙,由于我学习 的网络编程也开始不久,所以我下面所说的肯定会有错误的,
还请大家指点出来,在这里我先谢谢大家了。
在这一个章节里面,我会和以前的几个章节不同,在前面我都是概括的说了一下,从现在
开始我会尽可能的详细的说明每一个函数及其用法。好了让我们去领会 的伟大的魅
力吧!
网络知识介绍
客户端程序和服务端程序
网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的 客户端和服务
器端
网络程序是先有服务器程序启动等待客户端的程序运行并建立连接一般的来说是服务端的
程序在一个端口上监听直到有一个客户端的程序发来了请求
常用的命令
由于网络程序是有两个部分组成所以在调试的时候比较麻烦为此我们有必要知道一些常用
的网络命令
命令 是用来显示网络的连接路由表和接口统计等网络的信息 有许多的选项
我们常用的选项是用来显示详细的网络状态至于其它的选项我们可以使用帮助手册获
得详细的情况
是一个用来远程控制的程序但是我们完全可以用这个程序来调试我们的服务端程序
的比如我们的服务器程序在监听 端口我们可以用 来查看服务端
的状况
介绍
传输控制协议是一种面向连接的协议当我们的网络程序使用
这个协议的时候网络可以保证我们的客户端和服务端的连接是可靠的安全的
!" 用户数据报协议是一种非面向连接的协议这种协议并不能保
证我们的网络程序的连接是可靠的所以我们现在编写的程序一般是采用 协议的
初等网络函数介绍()
系统是通过提供套接字 来进行网络编程的网络程序通过 和其它几个函
数的调用会返回一个通讯的文件描述符我们可以将这个描述符看成普通的文件的描述符
来操作这就是 的设备无关性的好处我们可以通过向描述符读写操作实现网络之间的
数据交流
#"$%%
#"& 说 明 我 们 网 络 程 序 所 在 的 主 机 采 用 的 通 讯 协 族 '()*+, 和 '()+*- 等
'()*+, 只能够用于单一的 系统进程间通信而 '()+*- 是针对 + 的因而可以
允许在远程主机之间通信当我们" 时发现#" 可选项是().而不是 '().因
为 !/ 是 % 的实现所以用 ( 代替了 '(不过我们都可以使用的
$%& 我 们 网 络 程 序 所 采 用 的 通 讯 协 议 012)03-'4012)53'4 等
012)03-'4 表明我们用的是 协议这样会提供按顺序的可靠双向面向连接的比
特流012)53'4表明我们用的是 协议这样只会提供定长的不可靠无连接的通
信
%&由于我们指定了 $%所以这个地方我们一般只要用 6 来代替就可以了 为网
络通讯做基本的准备成功时返回文件描述符失败时返回看 可知道出错的详细情况
/#
/####."$)####
#&是由 调用返回的文件描述符
##&是 ## 结构的长度
"$)##&是一个指向 ## 的指针在中有## 的定义
##7
!#)"$8
)#9:;8<8
不过由于系统的兼容性我们一般不用这个头文件而使用另外一个结构##)
来代替在中有 ##) 的定义
##)7
!#)"$8
!#)%8
)##)##8
!#)=9;8<
我们主要使用 + 所以 )"$ 一般为 '()+*-)## 设置为 +*'3)'*> 表示
可以和任何的主机通信)% 是我们要监听的端口号)=9;是用来填充的/# 将本
地的端口同 返回的文件描述符捆绑在一起成功是返回 6失败的情况和 一样
#/!
#&是 /# 后的文件描述符
/!&设置请求排队的最大长度当有多个客户端程序和服务端相连时使用这个表示可以
介绍的排队长度 函数将 /# 的文件描述符变为监听套接字返回的情况和 /# 一样
:%
%###.##.##
#&是 后的文件描述符
#### 是用来给客户端的程序填写的服务器端只要传递指针就可以了/# 和
% 是服务器端用的函数% 调用时服务器端的程序会一直阻塞到有一个客户程序发
出了连接% 成功时返回最后的服务器端的文件描述符这个时候服务器端可以向该描述
符写信息了失败时返回
?
###.@)####
#& 返回的文件描述符
@)##&储存了服务器端的连接信息其中 )## 是服务端的地址
##&@)## 的长度
函数是客户端用来同服务端连接的成功时返回 6# 是同服务端通讯的文件描述
符失败时返回
A实例
服务器端程序
.......服务器程序@ ............
"!.!@9;
7
#B)#8
##)@)##8
##))##8
)=%"/8
9;CDEF'>(GHD8
!FC
7
%#D!&I%"/HHD!@96; 8
8
<
%"/C!@9; J6
7
%#D!&I%"/HHD!@96; 8
8
<
.服务器端开始建立 描述符.
#C'()+*-012)03-'46 CC
7
%#D0&IHHD 8
8
<
.服务器端填充## 结构.
/=K@)##=##) 8
@)##)"$C'()+*-8
@)##)##)##C+*'3)'*> 8
@)##)%C%"/ 8
.捆绑 # 描述符.
/####. K@)## =## CC
7
%#DL#&IHHD 8
8
<
.监听 # 描述符.
#? CC
7
%#D&IHHD 8
8
<
B
7
.服务器阻塞直到客户程序建立连接.
)=C=##) 8
B)#C%###. K)## K)= CC
7
%#D'%&IHHD 8
8
<
%#D0@!"IHD
))##)## 8
BB)# CC
7
%#DM-&IHD 8
8
<
.这个通讯已经结束.
B)# 8
.循环下一个.
<
# 8
6 8
<
客户端程序
.......客户端程序............
"!.!@9;
7
#8
/96:;8
##)@)##8
.8
%"//$8
!FC
7
%#D!&I"%"/HHD!@96; 8
8
<
C!/$"!@9; CC*
7
%#D5"HD 8
8
<
%"/C!@9; J6
7
%#D!&I"%"/HHD!@96; 8
8
<
.客户程序开始建立# 描述符.
#C'()+*-012)03-'46 CC
7
%#D0-&IHHD 8
8
<
.客户程序填充服务端的资料.
/=K@)##=@)## 8
@)##)"$C'()+*-8
@)##)%C%"/ 8
@)##)##C.)##. N)## 8
.客户程序发起连接请求.
###. K@)## =## CC
7
%#D-&IHHD 8
8
<
.连接成功了.
/$C##/6: CC
7
%#D3#-&IHD 8
8
<
/9/$;CH8
%D+@@#&IHD/ 8
.结束通讯.
# 8
6 8
<
4(
这里我们使用 5*的 " 实用程序来编译关于 " 的详细说明见4使用介绍
OOOOOOOOO4OOOOOOOOOOO
&@
@&@
!PQPR
剩余24页未读,继续阅读
资源评论
zhqyouxiang
- 粉丝: 0
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 《CKA/CKAD应试指南/从docker到kubernetes 完全攻略》学习笔记 第1章docker基础(1.1-1.4)
- 基于python实现的水下压缩空气储能互补系统建模仿真与经济效益分析+源代码+论文
- 华中科技大学-自然语言处理实验,Bi-LSTM+CRF的中文分词框架,并且利用基于深度学习的方法进行中文命名实体识别++源码报告
- 基于动态罚函数的铁路车流分配与径路优化模型python源码
- 鱼群算法求解组环问题python源码+文档说明
- 基于决策优化的多波束测深测线规划模型MATLAB代码
- 课程设计-基于python实现的多目标优化算法求解带时间窗的车辆路径规划问题+源代码+文档说明+界面截图+pptx
- 基于通信信号与通信系统的MATLAB仿真源码-课程设计
- 嵌入式-信号机制(概念,发送,定时,捕捉,SIGCHLD 信号实现回收子进程)
- c语言管理系统大一大二笔记
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功