立即学习:https://edu.csdn.net/course/play/24458/296234?utm_source=blogtoedu

1.服务器端

#以打电话通讯为例子进行说明
#导入相应的模块
import socket#1、设置套接字的类型以及协议(买手机),其实就是设置一个套接字,phone即为一个套接字
#设置为网络类型的套接字:socket.AF_INET
#设置为TCP协议:socket.SOCK_STREAM
phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#2、绑定端口以及制定IP地址(绑定手机卡)
#bind(('ip地址',端口))传入的是一个元组
#端口是0-65550,其中0-1024是给操作系统使用的
phone.bind(('127.0.0.1',8080))#3、监听端口listen()
#表示可挂起的请求的最大数量为5个,如接着一个电话时,另一个电话又打进了,这时候需要将这个电话挂起,等当前的电话结束后再处理后面打进来的这个电话
phone.listen(5)#4、阻塞,等待客户端的连接accept()
res = phone.accept()'''(<socket.socket fd=348, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 8080), raddr=('127.0.0.1', 65470)>, ('127.0.0.1', 65470))res返回了一个元组,含有两个元素,第一个元素是套接字对象:<socket.socket fd=348, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 8080), raddr=('127.0.0.1', 65470)>,第二个是本地地址与端口组成的元素('127.0.0.1', 65470)'''#5、获得收发消息的套接字
conn,client_addr = res#6、收发消息#1)接收客户端的请求信息recv()
data = conn.recv(1024)#1024表示接收的字节最大量是1024bytes
print('这是客户端的请求数据',data)#2)处理接收的请求后,发送数据send()
#将客户端发送来的小写字母经过大写处理后发送返回给客户端
conn.send(data.upper())#7、关闭接收消息的套接字
conn.close()#8、关闭phone套接字
phone.close()

2.客户端

#导入模块
import socket#1、设置phone套接字
phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#2、连接服务器(打电话),本地地址:127.0.0.1
phone.connect(('127.0.0.1',8080))#3、向服务器发送请求send(),发送的数据不能直接发送字符串,因为要传送到物理层底层,因此需要转换成二进制的bytes类型进行发送,只需:发送的数据.encode('utf-8')即可
phone.send('hello'.encode('utf-8'))#4、接收服务器返回来的数据recv()
res = phone.recv(1024)#接收小于1024bytes的数据
print('服务器返回来的数据:',res)#5、关闭套接字phone
phone.close()

注:服务器端含有两个套接字,一个是phone用于绑定、监听端口,等待客户端请求,conn用于接收发送数据;而客户端则是只有一个套接字,phone,用于与服务器端进行通讯

学习笔记(05):Python网络编程并发编程-基于socket实现简单套接字通信相关推荐

  1. 学习笔记(04):Python网络编程并发编程-什么是socket

    立即学习:https://edu.csdn.net/course/play/24458/296233?utm_source=blogtoedu 1.什么是网络编程? 答:网络编程也叫做socket编程 ...

  2. Python网络与并发编程 01 Socket编程

    前瞻知识 C/S架构 C/S架构是一种由服务端(Server)和客户端(Client)组成的双层架构. 互联网中处处充满了C/S架构(Client/Server),比如我们需要玩英雄联盟,就必须连接至 ...

  3. python套接字编程_Python套接字编程(1)——socket模块与套接字编程

    在Python网络编程系列,我们主要学习以下内容: 5. 常见的Python异步编程框架 6. 协程在Python网络编程中的使用 本文介绍Python下的基本套接字编程,主要基于 socket 模块 ...

  4. python socket 网络聊天室_Python基于Socket实现简单聊天室

    本文实例为大家分享了Python基于Socket实现简单聊天室,供大家参考,具体内容如下 服务端 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Ti ...

  5. 学习笔记(19):Python网络编程并发编程-互斥锁

    立即学习:https://edu.csdn.net/course/play/24458/296430?utm_source=blogtoedu 1.互斥锁: 多进程间的内存是相互隔离的,因此其数据也是 ...

  6. 学习笔记(34):Python网络编程并发编程-异步调用与回调机制

    立即学习:https://edu.csdn.net/course/play/24458/296452?utm_source=blogtoedu 1.知识点:(详细见代码注释) 1)同步调用: res1 ...

  7. 学习笔记(33):Python网络编程并发编程-进程池线程池

    立即学习:https://edu.csdn.net/course/play/24458/296451?utm_source=blogtoedu 进程池与线程池: 一般应用在网站上,进程池或线程池最大的 ...

  8. 学习笔记(28):Python网络编程并发编程-死锁与递归锁

    立即学习:https://edu.csdn.net/course/play/24458/296445?utm_source=blogtoedu 1.死锁(Lock()的局限性) 知识点:Lock()只 ...

  9. 学习笔记(18):Python网络编程并发编程-守护进程

    立即学习:https://edu.csdn.net/course/play/24458/296429?utm_source=blogtoedu 守护进程(了解) 1.概念:守护进程是主进程在创建子进程 ...

最新文章

  1. IOS开发-地图 (mapkit)实验
  2. 解决Windows下栈内存过小的问题
  3. 【词汇】preci-词根、ap-前缀、de-前缀、ous-后缀、ify-后缀、ise-后缀
  4. [Android Studio] Android Studio如何查看branch列表及切换branch(转载)
  5. jvm解决堆内存溢出问题
  6. python怎么变成exe文件_如何在python中知道CPython可执行文件是否是调试版本?
  7. EF Core 实现多租户
  8. 跟我学调试-必备神器:Postman
  9. 单片机涡轮流量传感器_迅尔仪表|同是涡轮流量计,为什么液体涡轮流量计不能测气体?...
  10. 集合差异比较算法及性能测试
  11. 总奖池31万!智能零售柜商品识别,“信也科技杯”算法大赛启动
  12. ubuntu查看cuda和cudnn
  13. GameEntity(六)—— IChat
  14. html5局部放大图片,图片局部放大效果原理详解
  15. 南京邮电大学-IP网络技术重难点突破(江凌云老师课程)
  16. 关于Tomcat和Servlet容器的小结
  17. python 等差素数数列
  18. 1150 Travelling Salesman Problem
  19. CSS单行、多行文本溢出隐藏
  20. STM32互补PWM输出使能控制

热门文章

  1. jquery实战--定宽
  2. [团队开发]总结下Server 2008 + TeamFoundation Server 2008安装过程
  3. FormView在什么情况下自动生成模板项?
  4. qrcode.js 二维码生成器
  5. 大数据项目中的QA需要迎接新的挑战
  6. Zookeeper基础使用机制原理
  7. PyCharm 通过Github和Git上管理代码
  8. PyInstaller用法
  9. 红帽Linux故障定位技术详解与实例(1)
  10. 2010年亚运会前广州将大力推广清洁能源公交