기술나눔

9.파이썬 학습: 소켓

2024-07-12

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

1. 네트워크 통신 요소(IP+포트+전송 프로토콜)

여기에 이미지 설명을 삽입하세요.

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.수락()

클라이언트가 연결을 시작하면 ‌sk.accept() 메서드는 두 가지 값을 반환합니다.
하나는 클라이언트와 통신하는 데 사용되는 새로운 소켓 개체 conn입니다.
다른 하나는 클라이언트의 주소이며 ‌는 클라이언트의 네트워크 위치를 나타냅니다. ‌