题目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. 【复习笔记】重习 AC 自动机

    发现已经忘了许多....于是复习一下 基础要点概况 AC 自动机基于 Trie 树 的结构,即构建 AC 自动机前需要先建 Trie. 一个状态中除了转移 \(\delta\) 之外还有失配指针 \( ...

  2. Salesforce 系列(一):云服务和 Salesforce 理念简介

    本系列文章系笔者在 Salesforce 开发过程中的些许总结与心得,旨在记录自己的成长,以及为对 Salesforce 感兴趣的小伙伴提供一些帮助,如有疏漏,还望多多包涵 ~ 云服务 云服务,也称云 ...

  3. 侧边栏js样式代码

    <!-- menu html --> <div class="container"> <div class="menu-wrap optis ...

  4. git基础使用(超级详细)

    使用git前的步骤: 1. 安装git (安装步骤省略) 2. 使用git设置用户名和邮箱 git config --global user.name "Your Name" gi ...

  5. .net core 和 WPF 开发升讯威在线客服与营销系统:背景和产品介绍

    本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程.本产品已经成熟稳定并投入商用. 在线演示环境:https://kf-m.shengxunwei.com ...

  6. 利用Java Flight Recorder(JFR)诊断timing及内存问题

    Java Flight Recorder(JFR), 以下简称JFR,请注意这个只有Oracle JDK 1.7(7u40)或以上版本才有, OpenJDK木有这东西. 启用: Java命令行启动参数 ...

  7. 我们为什么选择VUE来构建前端

    很多使用过VUE的程序员,对VUE的评价是"Vue.js 兼具angular.js和react.js的优点,并剔除了它们的缺点". 那么,他真的值得这么高的评价嘛? Vue.js的 ...

  8. Python 刷题笔记

    Python 刷题笔记 本文记录了我在使用python刷题的时候遇到的知识点. 目录 Python 刷题笔记 选择.填空题 基本输入输出 sys.stdin 与input 运行脚本时传入参数 Pyth ...

  9. .NET Core 使用MediatR CQRS模式 读写分离

    前言 CQRS(Command Query Responsibility Segregation)命令查询职责分离模式,它主要从我们业务系统中进行分离出我们(Command 增.删.改)和(Query ...

  10. Azure Terraform(一)入门简介

    一,引言 众所周知,当企业将项目整体架构资源迁移到云上,云基础设施架构师就要根据现有项目搭建整体项目的基础设施资源的架构,然后我们的云运维工程师就要根据设计好基础设施的架构图来创建云上资源,但是在构筑 ...