Python网络编程 4.1 主机名与套接字

  1. 通过之前的学习,我们知道,套接字是无法使用单个Python的原始类型(如数字或字符串)来命名的。而TCP和UDP都通过整形的端口号来使一台机器上运行的多个不同的应用程序共享该机器的IP地址。因此,要生成一个套接字名,要把IP地址与端口号结合起来,为一个Python元组的形式:('127.0.0.1',8080)。书中P55介绍了所有需要提供某种形式的套接字名作为参数的主要套接字方法。
  2. 套接字的五个坐标,通过以下代码段来分析
import socket
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind(('localhost',1060))

            可以看到,显式地指定了四个值,两个用来对套接字做配置,两个用来提供bind()调用所需要的地址。另外,还有一个可能会出现的坐标。

  • 地址族(address family)的选择是最重要的决定。某个特定的机器可能会连接到多个不同类型的网络。对地址族的选择指定了想要进行通信的网络类型。如,AF_INET表示通信的网络层面是IP层。另外还有一些地址族,可以用dir(socket)方法来打印出来。
  • 套接字类型(socket type)给出了希望在已经选择的网络上使用的通信技术。注意,虽然UDP和TCP是AF_INET协议族特有的,但是套接字接口的设计者分别为基于数据报和数据流的套接字这一宏观的概念创建了一些通用的名字,就是SOCK_DGRAM和SOCK_STREAM。由于很多地址族都支持其中一种或是全部协议,因此只需要这两个符号就可以覆盖大量不同地址族的很多协议了。
  • 第三个参数是协议。因为一旦确定了协议族以及套接字类型,可能使用的协议范围就被缩小到了一个主要的选项,所以这项参数很少使用。因此通常不指定该参数的值或者把它设为0,表示自动选择协议,因此在实际应用中,它几乎是不需要的。
  • 最后,用于建立连接的两个参数就是IP地址和端口号。
这时应注意,套接字名之所以由主机名和端口号这两部分组成,是因为我们特别指定了套接字的前三个坐标。也就是说,如果我们选择了其他的地址族和通信方式,那么可能

还需要一些其他的数据结构,而不是一个字符串和整形构成的二元组。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值