网络编程基础(下)
创始人
2024-06-03 08:12:36
0

7 udp套接字示例

7.1 udp简单示例

  • udp服务端

import socket
ip_port = ('127.0.0.1', 9000)# 创建一个服务器的套接字
udp_server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)# 绑定服务器套接字
udp_server.bind(ip_port)# 接受客户端的信息
msg, addr = udp_server.recvfrom(1024)
print(msg, addr)# 发送信息
udp_server.sendto("hello".encode(), addr)
  • udp客户端

import socket
ip_port = ('127.0.0.1', 9000)# 创建一个客户端套接字
udp_client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 输入发送的数据
msg = input('>>: ').strip()# 发送信息给服务器
udp_client.sendto(msg.encode('utf-8'), ip_port)# 接受服务器的信息
back_msg, addr = udp_client.recvfrom(1024)
print(back_msg.decode('utf-8'), addr)

7.2 udp聊天器示例

  • udp服务器

import socket
ip_port = ('127.0.0.1', 8081)
# 创建一个服务器套接字
udp_server_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定IP地址和端口号
udp_server_sock.bind(ip_port)# 循环收发消息
while True:# 接收qq_msg, addr = udp_server_sock.recvfrom(1024)print('来自[%s:%s]的一条消息:%s' % (addr[0], addr[1], qq_msg.decode('utf-8')))# 发送back_msg = input('回复消息: ').strip()udp_server_sock.sendto(back_msg.encode('utf-8'), addr)
  • udp客户端

import socketudp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)qq_name_dic = {'乔治': ('127.0.0.1', 8081),'james': ('127.0.0.1', 8082),'苯环': ('127.0.0.1', 8083),'岳岳': ('127.0.0.1', 8084),
}while True:qq_name = input('请选择聊天对象: ').strip()while True:msg = input('请输入消息,回车发送: ').strip()if msg == 'quit':breakif not msg or not qq_name or qq_name not in qq_name_dic:continueudp_client_socket.sendto(msg.encode('utf-8'), qq_name_dic[qq_name])back_msg, addr = udp_client_socket.recvfrom(1024)print('来自[%s:%s]的一条消息:%s' % (addr[0], addr[1], back_msg.decode('utf-8')))

8 tcp套接字示例

tcp是基于连接的,必须先启动服务器,然后在启动客户端去连接服务器

8.1 tcp套接字工作原理

8.2 tcp简单示例

  • tcp服务端

import socketip_port = ('127.0.0.1', 9000)  # 电话卡# 创建服务器套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 把地址绑定给套接字
s.bind(ip_port)
# 监听链接
s.listen(5)# 接受客户端连接
conn, addr = s.accept()
# print(conn)
# print(addr)
print('接到来自%s的电话' % addr[0])# 对话
msg = conn.recv(1024)
print(msg.decode(), type(msg))
conn.send("hi".encode())conn.close()  # 关闭客户端套接字
s.close()  # 关闭服务器套接字
  • tcp客户端

import socketip_port = ('127.0.0.1', 9000)# 创建客户端套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 尝试连接服务器
s.connect_ex(ip_port)#对话
s.send('hello world'.encode('utf-8'))
feedback = s.recv(1024)
print(feedback.decode('utf-8'))# 关闭客户端套接字
s.close()

8.3 tcp改进示例

  • tcp服务端改进版

import socket
ip_port = ('127.0.0.1', 8081)s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(ip_port)
s.listen(5)while True:conn, addr = s.accept()# print(conn)# print(addr)print('接到来自%s的电话' % addr[0])while True:msg = conn.recv(1024)print(msg.decode(), type(msg))str = input(">>>")conn.send(str.encode())conn.close()
  • tcp客户端改进版

import socket
ip_port = ('127.0.0.1', 8081)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect_ex(ip_port)while True:msg = input('>>: ').strip()if len(msg) == 0:continues.send(msg.encode('utf-8'))feedback = s.recv(1024)print(feedback.decode('utf-8'))s.close()

9 tcp的三次握手四次挥手(面试常考)

  • 流程图

  • 术语

  • SYN:同步位,SYN=1,表示进行一个连接请求。

  • ACK:确认位,ACK=1,确认有效,ACK=0,确认无效。

  • ack:确认号,对方发送序号+1。

  • seq:序号。

  • FIN:断开连接并且会停止发送数据。

相关内容

热门资讯

美股异动|吉利德科学两日连跌迎... (转自:美股情报站)近期,吉利德科学公司股价出现显著波动。在5月14日,该股的股价下跌了3.01%,...
提升诉讼服务质效 转自:黑龙江日报 本报讯(纪世强 记者刘大泳)近日,佳木斯市东风区法院举办了一场关于要素式起...
寻墓云蒙山   本报记者 代丽丽  【开栏的话】  今年是中国人民抗日战争暨世界反法西斯战争胜利80周年。在烽火...
腾讯一季度研发支出增至189....   本报讯(记者 袁璐)腾讯公司昨天披露2025年一季度业绩。财报显示,2025年一季度,公司收入为...
刘国梁下月赴联合国接受证书 【#刘国梁下月赴联合国接受证书#】#刘国梁将前往多哈# 《乒乓世界》杂志发布消息,5月13日,联合国...
近30份估值提升计划出炉,央企... 央企控股上市公司是中央企业开展生产经营、参与市场竞争的主要载体,也是稳定资本市场的重要力量。近期,部...
还原明代植物图像的整体图景 转自:贵州日报 借助图像展示植物,是古今中外认知草木的一条重要途径。故而古有郑樵“草木之状,非...
何以“酷中国”? 转自:上观新闻身在此山中,看得未必真切。他者视角,让我们可以跳出来观察。“希望西方能够认识到中国是非...
旅游车:4月大中型销量同比下滑... 02. 旅游车分析师表示,4月大中型旅游车销量同比下滑25.37%,1~4月同比下滑6.85%,这是...
联合国:以色列援助加沙新方案是... 转自:央视以军从3月2日起对巴勒斯坦加沙地带实施封锁,联合国世界粮食计划署日前发布的报告显示,加沙地...
巍巍京西筑坦途 京西群山环绕,108国道所经之处常常一边是山体、一边是山沟,落差大、盘山路蜿蜒曲折。红井立交护坡施工...
泽连斯基:正在等待俄方确认参加... 当地时间5月14日,乌克兰总统泽连斯基在当天晚间例行视频讲话中表示,目前正在等待俄罗斯确认参加土耳其...
百名技术人员田间帮农解难 转自:黑龙江日报 为秧苗“把脉”、为农机“体检”、为农情“开方”。眼下,正值春耕生产关键时期...
学术探讨|数字化视域下高校思政... 转自:黑龙江日报 □杨晓烁 新时代,为了应对数字化浪潮的冲击,高等教育亟需开辟教育发展...
东山精密拟约1亿欧元收购法国G...   本报记者 陈 红  5月14日,苏州东山精密制造股份有限公司(以下简称“东山精密”)发布公告称,...
外卖竞争不能背离服务本质 近日,市场监管总局等5部门约谈京东、美团、饿了么等外卖平台企业,直指行业恶性竞争、骑手权益保障不足等...
辽宁省企业大会企业数字化转型主...   5月14日,辽宁省企业大会企业数字化转型主题交流会在沈阳举办。本次活动以“数智赋能产业,数实融合...
我国科学家率先“看见”固体氢的... 转自:新华网  常温常压下,氢以气体状态存在。高压下,氢结晶为固体。而超高压下固体氢的原子排列方式一...
4月金融总量指标增长稳健 中国人民银行5月14日发布数据显示,4月末,社会融资规模存量同比增长8.7%,广义货币供应量(M2)...
腾讯Q1电话会:AI效果已显现...   来源:华尔街见闻  5月14日,腾讯控股召开一季度业绩电话会。  此前公布的财报显示,公司一季度...