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 ...
随机推荐
- 【题解】「AT4266」[ABC113B] Palace
AT4266 [ABC113B] Palace 水题解*n translation 有 \(n\) 个地方,第 \(i\) 个地方的海拔为 \(H_i\),该地方的温度为 \(T-H_i \times ...
- 转载:c# 获取CPU温度(非WMI,直接读取硬件)
c#获取cpu温度 很早一个项目做远控,所以需要用到获取cpu温度,但是就是不知从何下手,无意中发现了Open Hardware Monitor,令我的项目成功完成 亲测20台清装xp sp2的机器, ...
- 06 python开发之函数
06 python开发之函数 目录 06 python开发之函数 6 函数 6.1 基本使用 6.1.1 基本概念 6.1.2 定义函数 6.2 调用函数与函数返回值 6.2.1 调用函数三种形式 6 ...
- sqli-labs lexx25-28a(各种过滤)
less-25AND OR 过滤 less-25a基于Bool_GET_过滤AND/OR_数字型_盲注 less-26过滤了注释和空格的注入 less-26a过滤了空格和注释的盲注 less-27过滤 ...
- Pycharm github登录 Invalid authentication data. Connection refused.
在github.com前加上 https:// 注意登录时使用的是用户名不是邮箱
- 测开之数据类型· 第3篇《列表推导式、字典推导式、2种方式创建生成器》
坚持原创输出,点击蓝字关注我吧 作者:清菡 博客:oschina.云+社区.知乎等各大平台都有. 目录 一.列表推导式 二.字典推导式 三.2种方式创建生成器 1.生成器表达式 2.函数里面,通过 y ...
- css 13-CSS3属性:Flex布局图文详解
13-CSS3属性:Flex布局图文详解 #前言 CSS3中的 flex 属性,在布局方面做了非常大的改进,使得我们对多个元素之间的布局排列变得十分灵活,适应性非常强.其强大的伸缩性和自适应性,在网页 ...
- vue第五单元(v-if和v-show以及v-for的灵活应用 watch以及computed的区别 (常见效果) #课程目标
第五单元(v-if和v-show以及v-for的灵活应用 watch以及computed的区别 (常见效果) #课程目标 精通 v-if v-else v-else-if 的使用 精通 v-show ...
- fMRI数据分析学习笔记——常用工具
背景 在学习fMRI数据处理的过程中,通过其他的资料看到了别人推荐的有用的fMRI数据处理软件和小插件,在此记录一下,以便后期慢慢学习使用. 1.NeuroImaging Analysis Kit ( ...
- 在IDEA中使用JDBC获取数据库连接时的报错及解决办法
在IDEA中使用JDBC获取数据库连接时,有时会报错Sat Dec 19 19:32:18 CST 2020 WARN: Establishing SSL connection without ser ...