Python Core(一)

0X01 套接字第一个家族 AF_UNIX

  地址家族:address family:UNIX 基于文件的套接字  

  第二类型  AF_INET

  地址家族: 因特网

  第三类型 :AF_NETLINK(无连接型)

  允许使用BSD套接字用户接口进行用户级别和内核级别代码之间的IPC。

 

0X02 面向连接的套接字与无连接的套接字

  (1).面向连接的套接字。

    通信提供序列化的,可靠的,不可重复的数据交付。信息可以被拆分成为多个片段,并且保证每一个套接字都能够达到目的地。实现这种类型的主要协议:TCP。

  (2).面向无连接的套接字

    与面向连接套接字性质相反。成本低廉。 UDP。

 

0X03 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_STREAM)

  使用   from socket import *  可以将socket属性引入命名空间,这种方法可以缩短代码。

  tcoSock = socket(AF_INET, SOCK_STREAM)

 

0X04 练习

2-1.面向连接的套接字和无连接的套接字区别。

  区别:1.在通信前是否需要建立连接。

     2.通信的稳定性。

     3.通信的速率。

2-2.客户端/服务器架构。(c/v结构)

    服务端被动地以循环程序地方式处理客户端主动发出的请求。

2-4.修改客户端源文件,不用硬编码规定主机名,端口号。

 1 from socket import *
 2 import re
 3 
 4 def checkip(ip):
 5     p = re.compile('^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$')
 6     if p.match(ip):
 7         return True
 8     else:
 9         return False
10 
11 print 'please input the HOST\n'
12 
13 HOST = raw_input('')
14 
15 if not HOST:
16     HOST = 'localhost'
17 else:
18     if HOST != 'localhost':
19         if not checkip(HOST):
20             HOST = 'localhost'

 

posted @ 2017-03-09 18:30  哒B佬  阅读(1756)  评论(0)    收藏  举报