Κοινή χρήση τεχνολογίας

9.Μάθηση Python: Socket

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Στοιχεία επικοινωνίας δικτύου (IP+port+πρωτόκολλο μετάδοσης)

Εισαγάγετε την περιγραφή της εικόνας εδώ

2.Προγραμματισμός υποδοχών

2.1 Κατανόηση των πρωτοκόλλων TCP και UDP

Εισαγάγετε την περιγραφή της εικόνας εδώ

2.2 Διαδικασία υποδοχής

Υπάρχουν δύο αντικείμενα υποδοχής στην πλευρά του διακομιστή και ένα στην πλευρά του πελάτη.
Εισαγάγετε την περιγραφή της εικόνας εδώ
Εισαγάγετε την περιγραφή της εικόνας εδώ

3.Εξάσκηση πρίζας

Κωδικός διακομιστή:

import socket
#创建Socket对象
sk=socket.socket()
#绑定ip与端口号-使用元组传参
sk.bind(("127.0.0.1",13000))
#监听有没有请求过来
sk.listen()
print("服务端已经启动...")
#等待传入连接,在连接成功之前保持阻塞状态
#如果连接成功,会返回一个新的套接字和客户端ip与端口号
#新的套接字:conn-新的socket对象
conn,addr=sk.accept()
# print("客户端:",sk.accept())
print("客户端的ip地址是:",addr)
#接受客户端发生的数据-一次性接受多少字节.decode将bytes转为str
data=conn.recv(1024)
print("客户端发生的数据:",data.decode("utf-8"))
server_input=input("请输入>>>")
#发送数据encode(将str转为bytes)
conn.sendall(server_input.encode("utf-8"))
conn.close()
sk.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

κωδικό πελάτη

import socket
#创建socket对象
sk=socket.socket()
#发起连接
sk.connect(("127.0.0.1",13000))
#发送数据
client_input=input("请输入>>>")
sk.sendall(client_input.encode("utf-8"))
#接受数据-一次性接受多少字节
data=sk.recv(1024)
print("服务端响应数据:",data.decode("utf-8"))
sk.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

Εισαγάγετε την περιγραφή της εικόνας εδώ
Εισαγάγετε την περιγραφή της εικόνας εδώ

sk.accept()

Μόλις ένας πελάτης ξεκινήσει μια σύνδεση, η μέθοδος ‌sk.accept() θα επιστρέψει δύο τιμές: ‌
Το ένα είναι μια νέα σύνδεση αντικειμένου υποδοχής, που χρησιμοποιείται για την επικοινωνία με τον πελάτη.
Το άλλο είναι η διεύθυνση του πελάτη, ‌ αντιπροσωπεύει τη θέση δικτύου του πελάτη. ‌