1.UDP协议和TCP协议的区别

  • UDP(User Data Protocol)用户数据报协议, 是⼀个⽆连接的简单的⾯向数据报的传输层协议。 UDP不提供可靠性, 它只是把应⽤程序传给IP层的数据报发送出去, 但是并不能保证它们能到达⽬的地。 由于UDP在传输数据报前不⽤在客户和服务器之间建⽴⼀个连接, 且没有超时重发等机制, 故⽽传输速度很快。

    1. 常见的有:语音通话、视频通话、实时游戏画面 等。
  • TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接,然后再进行收发数据。

    1. 常见有:网站、手机APP数据获取等。

    2.UDP协议示例代码:

  • 服务端 ```python import socket

server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) server.bind((‘127.0.0.1’, 8002))

while True: data, (host, port) = server.recvfrom(1024) # 阻塞 print(data, host, port) server.sendto(“好的”.encode(‘utf-8’), (host, port))

  1. - 客户端
  2. ```python
  3. import socket
  4. client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  5. while True:
  6. text = input("请输入要发送的内容:")
  7. if text.upper() == 'Q':
  8. break
  9. client.sendto(text.encode('utf-8'), ('127.0.0.1', 8002))
  10. data, (host, port) = client.recvfrom(1024)
  11. print(data.decode('utf-8'))
  12. client.close()

3.TCP协议示例代码

  • 服务端 ```python import socket

1.监听本机的IP和端口

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind((‘127.0.0.1’, 8001)) sock.listen(5)

while True:

  1. # 2.等待,有人来连接(阻塞)
  2. conn, addr = sock.accept()
  3. # 3.等待,连接者发送消息(阻塞)
  4. client_data = conn.recv(1024)
  5. print(client_data)
  6. # 4.给连接者回复消息
  7. conn.sendall(b"hello world")
  8. # 5.关闭连接
  9. conn.close()

6.停止服务端程序

sock.close()

  1. - 客户端
  2. ```python
  3. import socket
  4. # 1. 向指定IP发送连接请求
  5. client = socket.socket()
  6. client.connect(('127.0.0.1', 8001))
  7. # 2. 连接成功之后,发送消息
  8. client.sendall(b'hello')
  9. # 3. 等待,消息的回复(阻塞)
  10. reply = client.recv(1024)
  11. print(reply)
  12. # 4. 关闭连接
  13. client.close()