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 ... 
随机推荐
- solidity 合约单元测试报错 org.fisco.bcos.web3j.protocol.exceptions.TransactionException: Transaction has failed with status: 0x16. Gas used: 1163650. (not-enough gas?)
			org.fisco.bcos.web3j.protocol.exceptions.TransactionException: Transaction has failed with status: 0 ... 
- 【MindSpore】Ubuntu16.04上成功安装GPU版MindSpore1.0.1
			本文是在宿主机Ubuntu16.04上拉取cuda10.1-cudnn7-ubuntu18.04的镜像,在容器中通过Miniconda3创建python3.7.5的环境并成功安装mindspore_g ... 
- js实现转盘抽奖
			大转盘抽奖,主要通过css3的"transform:rotate(0deg)"属性来控制元素的旋转角度来实现. 通常,抽奖的过程需要渐进的效果,所以直接通过旋转属性写比较繁琐. 这 ... 
- CSS3全览_文本+视觉+盒子+背景颜色
			CSS全览_文本+视觉+盒子+背景颜色 目录 CSS全览_文本+视觉+盒子+背景颜色 1. 文本属性 2. 视觉格式化基础 3. 内边距, 边框, 轮廓和外边距 4. 颜色, 背景和渐变 作者: ht ... 
- 浏览器小程序(Browser Applet)闪亮登场
			2017 年 1 月 9 日,微信小程序横空出世.随后,支付宝小程序.今日头条小程序.百度智能小程序.360小程序等纷纷推出,自此国内软件功能扩展领域进入到了小程序时代,小程序为丰富其宿主软件的功能和 ... 
- DG修改SYS用户密码(ORA-16810,ORA-01017)
			修改主库PROD1密码后,查看configuration状态看到以下报错: [oracle@edgzrip1-PROD1 ~]$ dgmgrl sys/oracleDGMGRL for Linux: ... 
- JavaSE16-集合·其三
			1.Map集合 1.1 Map集合概述和特点 1 interface Map<K,V> K:键的类型:V:值的类型 Map集合的特点 键值对映射关系 一个键对应一个值 键不能重复,值可以重 ... 
- 精尽Spring MVC源码分析 - HandlerAdapter 组件(一)之 HandlerAdapter
			该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2. ... 
- [OI笔记]三种逆元的求法
			其实这篇博客只是搬运一下我之前(大概是NOIP那会)写在word里的笔记- 下面直接复制原话,题目是洛谷上求逆元的模板题:https://www.luogu.org/problemnew/show/P ... 
- 使用 vue 仿写的一个购物商城
			在学习了 vue 之后,决定做一个小练习,仿写了一个有关购物商城的小项目.下面就对项目做一个简单的介绍. 项目源码: github 项目的目录结构 -assets 与项目有关的静态资源,包括 css, ... 
