TOP

Python基础教程之网络编程
2019-07-10 18:11:08 】 浏览:81
Tags:Python 基础 教程 网络编程

把多方链接在一起,进行数据传递;
网络编程就是,让不同电脑上的软件进行数据传递,即进程间通信;


IP地址是什么:比如192.168.1.1 这样的一些数字;
ip地址的作用:用来在电脑中 标识唯一一台电脑,比如192.168.1.1;在本地局域网是唯一的。


查看网卡信息


Linux:ifconfig
windows:ipconfig


linux关闭/开启网卡:sudo ifconfig ensxx down/up


ip分为ipv4和ipv6


ip地址分为:


单播--一对一
多播--一对多
广播--多对多


ip:标识电脑;
端口:标识电脑上的进程(正在运行的程序);
ip和端口一起使用,唯一标识主机中的应用程序,进行统一软件的通信;


知名端口


固定分配给特定进程的端口号,其他进程一般无法使用这个端口号;
小于1024的,大部分都是知名端口;
范围从0~1023;


动态端口


不固定分配,动态分配,使用后释放的端口号;
范围1024~65535;


socket是进程间通信的一种方式,能实现不同主机间的进程间通信,即socket是用来网络通信必备的东西;


创建套接字:


函数socket.socket创建一个socket,该函数有两个参数:
Address Family:可选 AF_INET(用于internet进程间通信)和AF_UNIX(用于同一台机器进程间通信);
Type:套接字类型,可选 SOCK_STREAM(流式套接字,主用于TCP协议)/SOCK_DGRAM(数据报套接字,主用于UDP套接字);


创建tcp套接字


创建udp套接字


在同一局域网内发消息;
如果用虚拟机和windows,要用桥接模式,确保在同一局域网内;


udp发送数据的几种情况:


只贴出最后一种情况,即完整代码


接收到的数据是一个元组,元组第一部分是发送方发送的内容,元组第二部分是发送方的ip地址和端口号;


发送数据的流程:


接收数据的流程:


udp发送消息时自己绑定端口示例


但应注意,同一端口在同一时间不能被两个不同的程序同时使用


单工:
只能单向发送信息,别人接收,别人不能回复消息,比如广播;


半双工:
两个人都能发消息,但是在同一时间只能有一个人发消息,比如对讲机;


全双工
两个人都能发消息,能同时发,比如打电话;


在这里体现不出来socket是全双工,因为现在解释器只能按照流程,一步一步走下去,后面学习了进程线程协程就可以做到了。


tcp应用场景:下载,发送消息
udp应用场景:电话,视频直播等


tcp客户端发送数据


监听套接字,专门用来监听的;
accept会对应新创建的套接字,当监听套接字收到一个请求后,将该请求分配给新套接字,由此监听套接字可以继续去监听了,而新套接字则为该胡克段服务。


listen里面的参数,表示同时只允许128个链接访问。


udp和tcp并用;
使用QQ,先登录,登录后告诉腾讯服务器此QQ运行的端口,发消息时,通过腾讯服务器转发给另一个QQ;
不绑定端口也有一个好处,就是允许多开,即一个电脑上可以运行多个QQ;


recvfrom里面不仅有发过来的数据,还有发过来数据的人的信息;
recv里面就只有数据;


9.当客户端的套接字调用close后.服务器端会recv解堵塞,并且返回的长度为0,因此服务器可以通过 返回数据的长度来区别客户端是否已经下线。


示例1-为一个用户办理一次业务:


示例2-为同一用户服务多次并判断一个用户是否服务完毕:


示例3-tcp文件下载客户端和服务端:


文件下载客户端


文件下载服务端



Python基础教程之网络编程 https://www.cppentry.com/bencandy.php?fid=54&id=227483

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C++面向对象程序设计之C++的初步.. 下一篇Java集合类的数据结构