脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - python SOCKET编程基础入门

python SOCKET编程基础入门

2021-09-10 00:31心悦君兮君不知-睿 Python

这篇文章主要介绍了python SOCKET编程基础入门的相关资料,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下

一、udp编程

1.客户端client:发起访问的一方。

2.服务器端

3.server段编程

(1)建立socket,socket是负责具体通信的一个实例

(2)绑定,为创建的socket指派固定的端口和ip地址

(3)接受对方发送内容

(4)给对方发送反馈,此步骤为非必须步骤

4.client端编程

(1)建立通信的socket

(2)发送内容到指定服务器

(3)接受服务器给定的反馈内容

5.模拟一下这个过程

(1)我们先建立一个服务器的函数

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#服务器案例
 
import socket
 
 
#模拟服务器的函数
 
def serverfunc():
 
  #1.建立socket
 
  #socket.af_inet:使用ipv4协议族
 
  #socket.sock_dgram:使用udp通信
 
  sock = socket.socket(socket.af_inet,socket.sock_dgram)
 
  #2.绑定ip和port
 
 
  #127.0.01:这个ip地址代表的是机器本身
 
  #7852:随机指定的端口号
 
  #地址是一个tuple类型,(ip.port)
 
  addr = ("127.0.0.1",7852)
 
  sock.bind(addr)
 
 
  #接受对方消息
 
  #等待方式为死等,没有其他可能性
 
  #recvfrom接受的返回值是一个元组,前一项表示数据,后一项表示地址
 
  #参数的含义是缓冲区大小
 
  #rst = sock.recvfrom(500)
 
  data,addr = sock.recvfrom(500)
 
 
  print(data)
 
  print(type(data))
 
 
  #发送过来的数据是bytes格式,必须通过解码才能得到str格式内容
 
  #decode默认参数是utf8
 
  text = data.decode()
 
  print(type(text))
 
  print(text)
 
 
  #给对方反馈的消息
 
  rsp = "i am very hungry now"
 
 
  #发送的数据需要编程成bytes格式
 
  #默认时utf8
 
  data = rsp.encode()
 
  sock.sendto(data,addr)
 
  
 
if __name__ == "__main__":
 
  print("start server")
 
  serverfunc()
 
print("end server")

(2)然后创建一个客户端的函数

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import socket
 
def clientfunc():
 
  sock = socket.socket(socket.af_inet,socket.sock_dgram)
 
  text = "you are very cool"
 
 
  #发送的数据必须是bytes格式
 
  data = text.encode()
 
  #发送
 
  sock.sendto(data,("127.0.0.1",7852))
 
  data,addr =sock.recvfrom(200)
 
 
  data = data.decode()
 
  print(text)
 
 
if __name__ == "__main__":
 
  print("start client")
 
  clientfunc()
 
print("end client")

(3)我们先启动服务器端函数

出现如下图像,它是创建了一个sock,然后自己绑定到127.0.0.1:7852,运行到sock.recvfrom(500)这里死等客户端发消息

python SOCKET编程基础入门

(4)再启动客户端函数

出现如下发送编码后的​text内容到服务器(127.0.0.1:7852),服务器成功接收后返回you are cool这句话。

python SOCKET编程基础入门

(5)我们再看服务器的函数那里

接受了bytes格式的字符串,并打印出来了,然后再解码打印出来,最后把you are cool返回​客户端。

python SOCKET编程基础入门

(6)这里有个地方没有办法:因为我们在一台电脑上做的测试,所以相当于自言自语,​不如在两台电脑上进行试验。​

二、源码

d33_1_serverprogramme.py

d33_2_clientprogramme.py

https://github.com/ruigege66/python_learning/blob/master/d33_1_serverprogramme.py

https://github.com/ruigege66/python_learning/blob/master/d33_2_clientprogramme.py

以上就是python socket编程基础入门的详细内容,更多关于python socket编程的资料请关注服务器之家其它相关文章!

原文链接:https://www.cnblogs.com/ruigege0000/p/11894654.html

延伸 · 阅读

精彩推荐