socket 编程

 1 什么是 Socket?
 2 Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。
 3 
 4 socket()函数
 5 Python 中,我们用 socket()函数来创建套接字,语法格式如下:
 6 
 7 socket.socket([family[, type[, proto]]])
 8 参数
 9 family: 套接字家族可以使AF_UNIX或者AF_INET
10 type: 套接字类型可以根据是面向连接的还是非连接分为SOCK_STREAM或SOCK_DGRAM
11 protocol: 一般不填默认为0.
12 
13 
14 
15 import socket
16 from datetime import datetime
17 # 服务端
18 sk=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
19 host=socket.gethostname() #获取主机名称
20 port=9999
21 # 绑定地址(host,port)到套接字, 在AF_INET下,以元组(host,port)的形式表示地址。
22 sk.bind((host,port))
23 # 开始TCP监听。backlog指定在拒绝连接之前,操作系统可以挂起的最大连接数量。该值至少为1,大部分应用程序设为5就可以了。
24 sk.listen(5)
25 while True:
26     # 被动接受TCP客户端连接, (阻塞式) 等待连接的到来
27     ck,addr=sk.accept()
28     print('连接地址:%s'%str(addr),datetime.now())
29     msg='欢迎访问菜鸟教程!'+'
'
30     # send() 发送TCP数据,将string中的数据发送到连接的套接字。返回值是要发送的字节数量,该数量可能小于string的字节大小。
31     ck.send(msg.encode('utf-8'))
32     ck.close()
33 
34 
35 
36 
37 import socket
38 import sys
39 from datetime import datetime
40 
41 # 客户端
42 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
43 host=socket.gethostname()
44 port=9999
45 # 主动初始化TCP服务器连接。一般address的格式为元组(hostname,port),如果连接出错,返回socket.error错误。
46 s.connect((host,port))
47 # 接收TCP数据,数据以字符串形式返回,bufsize指定要接收的最大数据量。flag提供有关消息的其他信息,通常可以忽略。
48 msg=s.recv(1024)
49 s.close()
50 print(msg.decode('utf-8'),datetime.now())
51 
52 
53 
54 
55 
56 
57 import socket
58 
59 s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
60 s.bind(('localhost',10021))
61 print('UDP连接')
62 while True:
63     data,addr=s.recvfrom(1024)
64     print('收到数据%s:%s.'%addr)
65     s.sendto(data.decode('utf-8').upper().encode(),addr)
66    
67 
68 
69 import socket
70 
71 s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
72 addr=('localhost',10021)
73 while True:
74     data=input('请输入要处理的数据:')
75     if not data or data=='quit':
76         break
77     s.sendto(data.encode(),addr)
78     recvdata,addr=s.recvfrom(1024)
79     print(recvdata.decode('utf-8'))
80 s.close()

原文地址:https://www.cnblogs.com/zpdbkshangshanluoshuo/p/10489998.html