ImageVerifierCode 换一换
格式:PPT , 页数:28 ,大小:298.52KB ,
资源ID:51037      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-51037.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(linux-c语言实现网络通信简介.ppt)为本站会员(无敌)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

linux-c语言实现网络通信简介.ppt

1、Linux C语言实现网络通信简介,主要内容,TCP/IP协议概述Socket基础编程域套接字,一、TCP/IP协议概述,OSI参考模型及TCP/IP参考模型,负责应用程序的网络访问,通过端口号来识别各个不同的进程。,负责端对端之间的通信会话连接与建立。传输协议的选择根据数据传输方式而定。,负责将数据帧封装成IP数据包,并运行必要的路由算法。,负责将二进制流转换为数据帧,并进行数据帧的发送和接收。数据帧是独立的网络信息传输单元。,TCP,TCP(Transmission Control Protocol,传输控制协议):为应用程序提供可靠的通信连接,实现了从一个应用程序到另一个应用程序的数据传

2、递。适合于一次传输大批数据的情况,并适用于要求得到响应的应用程序。 建立一次TCP连接需三次握手,基本过程是服务器先建立一个套接口并等待客户端的连接请求,然后顺序进行三次握手: 第一次握手:当客户端调用 connect进行主动连接请求时,客户端TCP发送一个SYN,告诉服务器客户端将在连接中发送的数据的初始序列号; 第二次握手:当服务器收到这个SYN后也给客户端发一个SYN,里面包含了服务器将在同一连接中发送的数据的初始序列号; 第三次握手:最后客户再回送一个带有确认顺序号和确认号的数据段来确认服务器发的SYN。 到此为止,一个TCP连接被建立。,TCP 三次握手,TCP数据报头,UDP(Us

3、er Datagram Protocol,用户数据报协议):是一种无连接协议,不需要像TCP那样通过三次握手来建立一个连接。且不对传送包进行可靠的保障,适合于一次传输少量数据,其可靠性由应用层来负责。同时,一个UDP应用可同时作为应用的客户方或服务器方。UDP比TCP能更好地解决实时性的问题,包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都使用UDP协议。,UDP数据报头,UDP,二、 Socket基础编程,socket概述,socket概念: 在Linux中的网络编程是通过socket接口来进行的。socket是一种特殊的I/O接口,它也是一种文件描述符,是一种常用的进程之间通信

4、机制,通过它不仅能实现本地机器上的进程之间的通信,而且能够实现不同机器上的进程之间的通信。socket类型:(1)流式socket(SOCK_STREAM):使用TCP协议(2)数据报socket(SOCK_STREAM):使用数据报协议UDP(3)原始socket:主要用于一些协议的开发流式socket和数据报socket的区别:前者在通信之前必须先建立连接,并且只能和一方通信;而后者在通信之前不用先建立连接,并且可以和多方通信。,socket,bind,recv/read,close,close,recv/read,connect,socket,send/write,send/write,

5、传输数据,传输数据,accept,listen,bind,等待客户连接请求的到来,三次握手过程建立TCP连接,服务器端,客户端,TCP协议socket编程的流程图,socket,recvfrom,sendto,bind,close,close,recv,connect,socket,send,send/sendto,recv/recvfrom,在connect之后也可以用read和write,或,或,传输数据,传输数据,UDP协议socet编程的流程图,进行socket编程的基本函数,socket():用于建立一个socket连接。可以指定socket类型等信息。在建立了socket连接之后,

6、可对socketaddr或socketaddr_in进行初始化,以保存所建立的socket信息。bind():用于将本地IP地址绑定到端口号,主要用于TCP的连接,在UDP的连接中不用。listen():用于创建一个等待队列,在其中存放未处理的客户端连接。connect():在TCP中用于与服务器端建立连接,而在UDP中connect()的作用是限定该套接字只能和指定的一方通信,即未使用connect之前,可以和任意的地址通信,而connect之后只能和一方通信。在TCP中一个socket只能connect一次,而在UDP中一个socket可以connect多次。,accept():用于等待并

7、接收客户端的连接请求,它通常从等待队列中取出第一个未处理的连接请求。send()和recv():分别用于发送和接收数据,可以用在TCP中,也可以用在UDP中。 sendto()和recvfrom():作用与send()和recv()类似。当用在TCP时,后面的几个与地址有关参数不起作用,作用等同于send()和recv();当用在UDP时,可以用在之前没有使用connect()的情况下,这两个函数可以自动寻找指定地址并进行连接。,Socket地址数据结构,struct sockaddr unsigned short sa_family; /*协议族*/ char sa_data14; /*协议

8、地址,包含该socket的IP地址和端口号。*/;struct sockaddr_in short int sa_family; /*协议族*/ unsigned short int sin_port; /*端口号*/ struct in_addr sin_addr; /*IP地址*/ unsigned char sin_zero8; /*填充0 以保持与struct sockaddr同样大小*/;,socket()函数:建立一个socket连接,bind()函数:将本地IP地址绑定到端口号(TCP),listen()函数:创建一个等待队列,connect()函数:与服务器端建立连接(TCP)

9、或限定该套接字只能和指定的一方通信(UDP),accept()函数:等待并接收客户端的连接请求,send()函数:发送数据,recv()函数:接收数据,sendto()函数,recvfrom()函数,三、域套接字,管道由于只能实现具有亲缘进程的进程间通信,使用受到了很大的限制,有名管道解决了这一问题。但是,无论是管道还是有名管道,都只能实现单向通信(在只创建一个管道的情况下)。 用套接字除了可以实现网络间不同主机间的通信外,还可以实现同一主机的不同进程间的通信,且建立的通信是双向的通信。这里所指的使用套接字实现进程间通信,是由将通信域指定为PF_UNIX来实现的,即Unix域套接字。,Unix

10、域套接字是通过套接字API实现的简单的协议族。实际上它并不代表一个网络协议;它只能连接到同一台机器上的套接字。它提供了灵活的IPC机制。它的地址是它所在的文件系统的路径名,创建之后套接字就和路径名绑定在一起。用来表示Unix域地址的套接字文件能够使用stat()但是不能通过open()打开,而且应该使用套接字API对它进行操作。Unix域套接字是面向连接的,每个套接字的连接都建立了一个新的通讯信道。服务器可能同时处理许多连接,但对于每个连接都有不同的文件描述符。这个属性使Unix域套接字能够比命名管道更好的适应IPC任务。,域套接字的函数的形式int socket(int domain, int type, int protocol);socket函数中的domain参数用于指定通信域,domain参数取PF_UNIX时,表示创建UNIX域的套接字。使用PFUNIX域的套接字可以实现同一机器上的不同进程间的通信。域套接字地址结构struct sockaddr_un sa_family_t sun_family; /* PF_UNIX或AF_UNIX */ char sun_path104; /* 要绑定的套接字文件路径 */ ,谢谢,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报