Berbagi teknologi

9. Pembelajaran Python: Soket

2024-07-12

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

1. Elemen komunikasi jaringan (IP+port+protokol transmisi)

Masukkan deskripsi gambar di sini

2.Pemrograman soket

2.1 Memahami protokol TCP dan UDP

Masukkan deskripsi gambar di sini

2.2 Proses soket

Ada dua objek soket di sisi server dan satu di sisi klien.
Masukkan deskripsi gambar di sini
Masukkan deskripsi gambar di sini

3. Latihan soket

Kode server:

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

kode klien

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

Masukkan deskripsi gambar di sini
Masukkan deskripsi gambar di sini

sk.terima()

Setelah klien memulai koneksi, metode ‌sk.accept() akan mengembalikan dua nilai: ‌
Salah satunya adalah koneksi objek soket baru, yang digunakan untuk berkomunikasi dengan klien;
Yang lainnya adalah alamat klien, ‌ mewakili lokasi jaringan klien. ‌