socket

1.套接字分类:

基于文件类型的套接字家族:AF_UNIX

基于网络类型的套接字家族:AF_INET

2.套接字的流程:

socket()模块函数用法:

  客户端:

 1 import socket
 2 iphone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
 3 iphone.connect(('192.168.16.47',8080))
 4 while True:
 5     choice=input('>>:').strip()
 6     if not choice:continue
 7     iphone.send(choice.encode('utf-8'))
 8     data=iphone.recv(1024)
 9     print(data.decode("utf-8"))
10 iphone.close()

  服务端:

 1 import socket
 2 iphone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
 3 iphone.bind(('192.168.16.47',8080))
 4 iphone.listen(5)
 5 print('Loading......')
 6 while True:                         #循环等待
 7     conn,addr=iphone.accept()
 8     print('此次来电的线路是:',conn)
 9     print('此次来电的号码是:',addr)
10     while True:                     #循环通讯
11         try:
12             data=conn.recv(1024)
13             if not data:break       #应对linux系统
14             print('客服端发来的贺电:',data.decode("utf-8"))
15             conn.send(data.upper())
16         except ConnectionResetError:
17             break
18     #关闭
19     conn.close()
20 iphone.close()

函数:

 1 import socket as s
 2 #服务端套接字函数
 3 s.bind(('10.10.10.10',8080))    #绑定(主机,端口)到套接字
 4 s.listen()                       #开始TCP监听
 5 s.accept()                       #被动接受TCP客户的连接,(阻塞式)等待连接的到来
 6 #客户端套接字函数
 7 s.connect()                      #主动初始化TCP服务器连接
 8 s.connect_ex()                   #connect()函数的扩展版本,出错时间时返回错码,而不是抛出异常
 9 #公共用途的套接字函数
10 s.recv()                         #接受TCP数据
11 s.send()                         #发送TCP数据(send在待发送数据量大于己端缓存区剩余空间时,数据丢失,不会发完)
12 s.sendall()                      #发送完成的TCP数据(本质就是循环调用send,sendall在待发送数据量大于己端缓存区剩余空间时,数据不丢失,循环调用sned直到发完)
13 s.recvfrom()                     #接收UDP数据
14 s.sendto()                       #发送UDP数据
15 s.getpeername()                  #连接到当前套接字的远端地址
16 s.getsockname()                  #当前套接字的地址
17 s.getsockopt()                   #返回指定套接字的参数
18 s.setsockopt()                   #设置指定套接字的参数
19 s.close()                        #关闭套接字
20 #面向锁的套接字方法
21 s.setblocking()                  #设置套接字的阻塞与非阻塞模式
22 s.settimeout()                   #设置阻塞套接字操作的超时时间
23 s.gettimeout()                   #得到阻塞套接字操作的超时时间
24 #面向文件的套接字的函数
25 s.fileno()                       #套接字的文件描述符
26 s.makefile()                     #创建一个与该套接字相关的文件
原文地址:https://www.cnblogs.com/gz369521/p/6802755.html