Technology sharing

9.Python doctrina: Socket

2024-07-12

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

1. Network communicationis elementa (IP+portum+ traductionis protocol)

Insert imaginem descriptionis hic

2.Socket programming

2.1 Intellectus TCP et UDP protocols

Insert imaginem descriptionis hic

2.2 Pentium processus

Duo sunt vasa nervum in latere servuli et unum in latere clientis.
Insert imaginem descriptionis hic
Insert imaginem descriptionis hic

3.Socket praxi

Servo codice:

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

clientis code

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

Insert imaginem descriptionis hic
Insert imaginem descriptionis hic

sk.accept()

Semel client nexum inchoat, sk.accept() methodus duos valores reddet: ‌
Una est nova nervus objecti conn, communicandus cum cliente;
Alia est oratio clientis, ‌ locum retis repraesentat clientis. ‌