美文网首页颠覆你的Python实践
【读书笔记】_网络编程

【读书笔记】_网络编程

作者: 大婶N72 | 来源:发表于2017-03-13 23:34 被阅读20次

    套接字是一种具有之前所说的“通讯端点”概念的计算机网络数据结构

    1、套接字有两种,分别是基于文件型的和基于网络型的。

    2、套接字地址:主机与端口

    3、面向连接与无连接

    3.1、面向连接的套接字,即在通讯之前一定要建立一条连接,这种通讯方式也被称为“虚电路”或“流套接字”。面向连接的通讯方式提供了顺序的,可靠的,不会重复的数据传输,而且也不会被加上数据边界。

    3.1.1、实现这种连接的主要协议就是传输控制协议(即 TCP)。要创建 TCP 套接字就得在创建的时候,指定套接字类型为 SOCK_STREAM,使用TCP/IP协议。

    3.2、无需建立连接就可以进行通讯,实现这种连接的主要协议就是用户数据报协议 (即 UDP)。要创建 UDP 套接字就得在创建的时候,指定套接字类型为 SOCK_DGRAM。SOCK_DGRAM 这个名字,使用UDP/IP协议。

    4、python中的网络编程

    4.1、socket()模块函数

    使用 socket.socket()函数来创建套接字。其语法如下:

    socket(socket_family, socket_type, protocol=0)

    创建一个 TCP/IP 的套接字:

    tcpSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    创建一个 UDP/IP 的套接字:

    udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    4.1.1、套接字对象的常用函数

    套接字函数

    4.2、创建一个TCP服务器

    4.2.1、创建通用的TCP服务器的伪代码,如下:

    ss = socket()     # 创建服务器套接字

    ss.bind() # 把地址绑定到套接字上

    ss.listen() # 监听连接

    inf_loop: # 服务器无限循环

        cs = ss.accept() # 接受客户的连接

        comm_loop: # 通讯循环

            cs.recv()/cs.send() # 对话(接收与发送)

        cs.close() # 关闭客户套接字

    ss.close() # 关闭服务器套接字(可选)

    备注1:一个简单的(单线程的)服务器会调用 accept()函数等待连接的到来。默认情况下,accept()函数是阻塞式的,即程序在连接到来之前会处于挂起状态。

    核心提示:创建线程来处理客户的请求

    SocketServer 模块是一个基于 socket 模块的高级别的套接字通讯模块,它支持在新的线程或进。

    4.2.2、TCP服务程序

    TCP服务器程序

    4.2.3、TCP客户端程序

    TCP客户端程序

    4.3、创建一个UDP服务器

    4.3.1、创建一个伪代码:

    ss = socket() # 创建一个服务器套接字

    ss.bind() # 绑定服务器套接字

    inf_loop: # 服务器无限循环

    cs = ss.recvfrom()/ss.sendto() # 对话(接收与发送)

    ss.close() # 关闭服务器套接字

    4.3.2、创建UDP服务器

    UDP服务器

    4.3.3、创建UDP客户端

    cs = socket() # 创建客户套接字

    comm_loop: # 通讯循环

    cs.sendto()/cs.recvfrom() # 对话(发送/接收)

    cs.close() # 关闭客户套接字

    UDP客户端

    相关文章

      网友评论

        本文标题:【读书笔记】_网络编程

        本文链接:https://www.haomeiwen.com/subject/bvoqnttx.html