题目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--网络编程的更多相关文章

  1. python高级之网络编程

    python高级之网络编程 本节内容 网络通信概念 socket编程 socket模块一些方法 聊天socket实现 远程执行命令及上传文件 socketserver及其源码分析 1.网络通信概念 说 ...

  2. 第六篇:python高级之网络编程

    python高级之网络编程   python高级之网络编程 本节内容 网络通信概念 socket编程 socket模块一些方法 聊天socket实现 远程执行命令及上传文件 socketserver及 ...

  3. 20155324 《Java程序设计》实验五 网络编程与安全

    20155324 <Java程序设计>实验五 网络编程与安全 实验内容 任务一 编写MyBC.java实现中缀表达式转后缀表达式的功能 编写MyDC.java实现从上面功能中获取的表达式中 ...

  4. 20165317Java实验五 网络编程与安全

    实验五 网络编程与安全 一.中缀转后缀 参考http://www.cnblogs.com/rocedu/p/6766748.html#SECDSA 结对实现中缀表达式转后缀表达式的功能 MyBC.ja ...

  5. Python之路 - 网络编程之粘包

    Python之路 - 网络编程之粘包 粘包

  6. Python之路 - 网络编程初识

    Python之路 - 网络编程初识 前言

  7. 20155326 《Java程序设计》实验五网络编程与安全实验报告

    20155326 <Java程序设计>实验五网络编程与安全实验报告 实验内容 任务一 1.两人一组结对编程: 参考http://www.cnblogs.com/rocedu/p/67667 ...

  8. #《JAVA程序设计》 20155214 实验五 网络编程与安全

    <JAVA程序设计> 20155214 实验五 网络编程与安全 实验内容 掌握Socket程序的编写: 掌握密码技术的使用: 设计安全传输系统. 实验要求 要求一 结对实现中缀表达式转后缀 ...

  9. 20155301 《Java程序设计》实验五网络编程与安全

    20155301 <Java程序设计>实验五网络编程与安全 实验内容 实验1: 两人一组结对编程:参考http://www.cnblogs.com/rocedu/p/6766748.htm ...

  10. 20155308 《Java程序设计》实验五 网络编程与安全

    20155308 <Java程序设计>实验五 网络编程与安全 实验内容 任务一 两人一组结对编程: 参考http://www.cnblogs.com/rocedu/p/6766748.ht ...

随机推荐

  1. 【题解】「CF1373B」01 Game

    这题好水,就是简单的模拟+字符串. \(\sf Translation\) 给定一个 \(01\) 串,如果 \(0\) 出现的次数和 \(1\) 出现的次数的最小值是奇数,输出 DA ,否则输出 N ...

  2. (原创)nginx反向代理上网,使docker可以拉取镜像

    转载请注明出处:饭饭博客:https://www.cnblogs.com/zzf0305/p/9602107.html 摘语:参考了N多大侠的资料,终于将自己的环境配置起来了.站在众多巨人的肩膀进行总 ...

  3. Elasticsearch 新机型发布,性能提升30%

    跨年迎双节,2020 年最后一次囤货的机会来啦! Elasticsearch Service 星星海新机型发布,更高性能,更低价格. 爆款机型限时特惠,帮助您顺畅体验 Elasticsearch 云上 ...

  4. Greenplum 性能优化之路 --(三)ANALYZE

    一.为什么需要 ANALYZE 首先介绍下 RBO 和 CBO,这是数据库引擎在执行 SQL 语句时的2种不同的优化策略. RBO(Rule-Based Optimizer) 基于规则的优化器,就是优 ...

  5. Spring(二)--IoC&AOP

    IOC 一.IOC概述: 一般指控制反转(inversion of Control),把创建对象的权利交给框架,Ioc容器控制对象,是框架的重要特征,并非是面向对象编程的专用术语.它包括依赖注入(DI ...

  6. 网络编程-python实现-socket(1.1.1)

    @ 目录 1.不同电脑进程之间如何通信 2.什么是socket 3.创建socket 1.不同电脑进程之间如何通信 利用ip地址 协议 端口 标识网络的进程,网络中的进程通信就可以利用这个标志与其他进 ...

  7. ceph存储集群的应用

    1.ceph存储集群的访问接口   1.1ceph块设备接口(RBD) ceph块设备,也称为RADOS块设备(简称RBD),是一种基于RADOS存储系统支持超配(thin-provisioned). ...

  8. 深入浅出JVM(一):你写得.java文件是如何被加载到内存中执行的

    众所周知,.java文件需要经过编译生成.class文件才能被JVM执行. 其中,JVM是如何加载.class文件,又做了些什么呢? .class文件通过 加载->验证->准备->解 ...

  9. C#——时间之不同国家的显示格式

    对于时间的显示,不同的地方有不同的时间格式,代码如下: public class Common_DateFormat { public Common_DateFormat() { // // TODO ...

  10. kaggle入门题Titanic

    集成开发环境:Pycharm python版本:2.7(anaconda库) 用到的库:科学计算库numpy,数据分析包pandas,画图包matplotlib,机器学习库sklearn 大体步骤分为 ...