Python实验6--网络编程
题目1
1.编写程序实现基于多线程的TCP客户机/服务器程序。
(1)创建服务器端套接字Socket,监听客户端的连接请求;
(2)创建客户端套接字Socket,向服务器端发起连接;
服务器端套接字
1. import socket
2.
3. # 服务器端套接字
4. server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
5. # 监听本机9999端口号
6. server.bind(('127.0.0.1', 9999))
7. # 开始监听,5代表等待连接的最大数量
8. server.listen(5)
9. while True:
10. # accept()会等待并返回一个客户端的连接:
11. sock,addr = server.accept()
12. print(addr)
13. # print(sock)
14. data = sock.recv(1024)
15. print(data.decode('utf-8'))
16. sock.close()
客户端套接字
1. import socket
2. client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
3.
4. client.connect(('127.0.0.1',9999))
5.
6. client.send(b'abc') # 字节形式发送
7.
8. client.close()
运行时,先启动服务器端,再启动客户端
启动服务器端后,服务器即使在接收到客户端发来的数据后,也不会自动关闭。
运行结果如下:
客户端发送数据完成后就关闭了。
题目2
2.编写程序实现基于UDP的客户端/服务器程序。
(1)创建Socket套接字;
(2)发送/接受数据;
(3)关闭套接字。
服务器端基于UDP接收数据并输出来自客户端的ip和端口以及发来的数据
# 服务器端接收数据,并在控制台输出客户端的地址和发来的数据
"""
TCP是建立可靠连接,并且通信双方都可以使用流的形式发送数据,相对于TCP,UDP则是面向无连接的协议。
使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号就可以直接发送数据包,但是能不能到达不能保证
它虽然传输数据不可靠,但是他的优点相比于TCP来讲是速度快。
"""
import socket
def main():
# socket.SOCK_DGRAM指定是UDP类型
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 获取本机ip
ip = socket.gethostbyname(socket.gethostname())
# 绑定端口
s.bind((ip,8088))
# 服务器端接收数据并输出
data,addr=s.recvfrom(1024)
print('Receive data from %s:%s' % addr)
print(data.decode('utf-8'))
s.close()
if __name__ == '__main__':
main()
客户端以基于UDP发送数据给服务器
1. # 客户端基于UDP向服务器发送数据
2. import socket
3. def main():
4. # socket.SOCK_DGRAM指定是UDP类型
5. s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
6. # 获取本机ip地址
7. ip = socket.gethostbyname(socket.gethostname())
8.
9. try:
10. # 客户端发送数据
11. s.sendto(b'12354',(ip,8088))
12. except:
13. print('发送失败')
14. print('发送成功')
15. # 关闭连接
16. s.close()
17. if __name__ == '__main__':
18. main()
最后客户端控制台输出“发送成功”
服务器的控制台输出
Receive data from 192.168.1.4:55197 12354
Python实验6--网络编程的更多相关文章
- python高级之网络编程
python高级之网络编程 本节内容 网络通信概念 socket编程 socket模块一些方法 聊天socket实现 远程执行命令及上传文件 socketserver及其源码分析 1.网络通信概念 说 ...
- 第六篇:python高级之网络编程
python高级之网络编程 python高级之网络编程 本节内容 网络通信概念 socket编程 socket模块一些方法 聊天socket实现 远程执行命令及上传文件 socketserver及 ...
- 20155324 《Java程序设计》实验五 网络编程与安全
20155324 <Java程序设计>实验五 网络编程与安全 实验内容 任务一 编写MyBC.java实现中缀表达式转后缀表达式的功能 编写MyDC.java实现从上面功能中获取的表达式中 ...
- 20165317Java实验五 网络编程与安全
实验五 网络编程与安全 一.中缀转后缀 参考http://www.cnblogs.com/rocedu/p/6766748.html#SECDSA 结对实现中缀表达式转后缀表达式的功能 MyBC.ja ...
- Python之路 - 网络编程之粘包
Python之路 - 网络编程之粘包 粘包
- Python之路 - 网络编程初识
Python之路 - 网络编程初识 前言
- 20155326 《Java程序设计》实验五网络编程与安全实验报告
20155326 <Java程序设计>实验五网络编程与安全实验报告 实验内容 任务一 1.两人一组结对编程: 参考http://www.cnblogs.com/rocedu/p/67667 ...
- #《JAVA程序设计》 20155214 实验五 网络编程与安全
<JAVA程序设计> 20155214 实验五 网络编程与安全 实验内容 掌握Socket程序的编写: 掌握密码技术的使用: 设计安全传输系统. 实验要求 要求一 结对实现中缀表达式转后缀 ...
- 20155301 《Java程序设计》实验五网络编程与安全
20155301 <Java程序设计>实验五网络编程与安全 实验内容 实验1: 两人一组结对编程:参考http://www.cnblogs.com/rocedu/p/6766748.htm ...
- 20155308 《Java程序设计》实验五 网络编程与安全
20155308 <Java程序设计>实验五 网络编程与安全 实验内容 任务一 两人一组结对编程: 参考http://www.cnblogs.com/rocedu/p/6766748.ht ...
随机推荐
- 算法——移掉K位数字使得数值最小
给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. leetcode 解题思路:如果这个数的各个位是递增的,那么直接从最后面开始移除一定就是最最小的:如果这个数的 ...
- 箭头函数this指向问题
this指向本质 箭头函数this指向的固定化,并不是因为箭头函数内部有绑定this的机制,实际原因是箭头函数根本没有自己的this,导致内部的this就是外层代码块的this.正是因为它没有this ...
- vue 事件函数传参
事件函数传参 在元素绑定事件时候,如果我们的函数没有传参,他也会有一个默认的传参值 event 但是如果我们的函数有传参,那么它必须作为做为最后一个传参值显示传递,且必须为$event 通过代码打印我 ...
- (byte & 0xff)操作
先看一段代码: @Test public void test(){ byte a = -5; byte b = 12; System.out.println(a); System.out.printl ...
- db2常用操作
1. db2建立远程节点编目及删除 db2 catalog tcpip node nodeName remote remoteIp server remotePort db2 list node di ...
- vue第十六单元(element-ui vue-lazyload 等常用插件)
第十六单元(element-ui vue-lazyload 等常用插件) #课程目标 1.掌握插件的引入方式 2.精通UI框架 3.掌握前端常见的几种效果实现 #知识点 一.elementUI的使用 ...
- 教你用Python自制拼图小游戏,一起来制作吧
摘要: 本文主要为大家详细介绍了python实现拼图小游戏,文中还有示例代码介绍,感兴趣的小伙伴们可以参考一下. 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Pyt ...
- NET 5使用gRPC
gRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架. https://grpc.io/docs/guides/ https://github.com/grpc/grpc-dotnet h ...
- WEBSERVICE 分析器错误信息: 未能创建类型
问题描述 分析器错误 说明: 在分析向此请求提供服务所需资源时出错.请检查下列特定分析错误详细信息并适当地修改源文件. 分析器错误信息: 未能创建类型"Service1". 源错误 ...
- 获取Web项目中的控制器类以及类中Action方法
前言 在使用时需要修改命名空间.需要过滤控制器.需要过滤Action方法.结果生成表的插入语句. 代码 public ActionResult ReloadData() { #region 获取所有的 ...