前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python进阶-Socket

Python进阶-Socket

作者头像
小团子
发布2019-07-18 15:26:48
3430
发布2019-07-18 15:26:48
举报
文章被收录于专栏:数据云团数据云团

Socket 使用 IP 地址 + 端口 + 协议的三元组唯一标识一个通信链路。服务器端的一个通信链路可以对应于多个客户端,比如一个 Web 服务器的 80 端口可以同时服务于大量的客户端。

  • TCP 服务器端:
import socket
import datetime

HOST = '0.0.0.0'
PORT = 8000

# AF_INET 说明使用 IPv4 地址,SOCK_STREAM 指明 TCP
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定 IP 与 端口
s.bind((HOST, PORT))
# 监听
s.listen(1)

while True:
  # 接收 TCP 连接,并返回新的 Socket 对象
  conn, addr = s.accept()
  # 输出客户端的 IP 地址
  print("客户端 IP 地址:", str(addr))
  dt = datetime.datetime.now()
  message = "当前时间" + str(dt)
  
  # 向客户端发送当前时间
  conn.send(message)
  print("发送", message)
  
  # 关闭连接
  conn.close()

通过 socket()、bind()、listen() 的一系列调用实现了对指定端口的监听,通过 accept() 接收客户端的连接,当有客户端连接成功后将当前系统时间发送给客户端,并马上关闭连接。代码主体处于 while 循环中,所以程序将不断监听并一直运行。

  • 客户端:
import socket

HOST = "127.0.0.1"
PORT = 8000

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.connect((HOST, PORT))

print("连接端口和地址", HOST, PORT)
# 接收数据,本次接收数据的最大长度为1024
data = s.recv(1024)
print("接收服务端返回的数据", data)

# 关闭连接
s.close

客户端通过 connect() 调用、连接服务器,连接成功后接收从服务器发来的数据,然后关闭连接、退出程序。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档