常用的地址家族
AF_UNIX:基于文件,实现同一主机不同进程之间的通信
AF_INET:基于网络,适用于IPv4
AF_INET6:基于网络,使用于IPv6

常见的连接类型
SOCK_STREAM:即TCP/IP。面向连接的套接字,通信之前必须建立可靠的连接。面向连接的套接字提供序列化的、可靠的和不重复的数据交付,而没有记录边界。
SOCK_DGRAM:即UDP。面向非连接的套接字,通信之前无需建立连接。在数据传输过程中无法保证数据的有序性、可靠性和重复性。然而数据报确实保存了记录边界,意味着数据是以整体发送的,而非事先切割多个片段。

socket通信

server端
import socket
server = socket.socket() # 默认是AF_INET、SOCK_STREAM
server.bind(("localhost",)) # 将主机号与端口绑定到套接字
server.listen() # 设置并启动TCP监听器
while True:
conn,addr = server.accept() # 被动接受TCP连接,一直等待连接到达
while True:
data = conn.recv() # 接收TCP消息,并制定最大长度
if not data:
print("连接已断开")
break
conn.send(data.upper()) # 将接收到的数据转为大写在发回给它
server.close() client端
import socket
client = socket.socket() # 默认是AF_INET、SOCK_STREAM
client.connect(("localhost",))
while True:
s = input(">>")
client.send(s.encode("utf-8"))
data = client.recv()
client.close()

socketserver模块
使用socketserver实现多并发

import socketserver
class MyServer(socketserver.BaseRequestHandler):
def handle(self):
while True:
self.data = self.request.recv()
if not self.data:
print("%s客户端连接已断开"%self.client_address)
break
self.request.sendall(self.data.upper())
if __name__ == "__main__":
server = socketserver.ThreadingTCPServer(("localhost",),MyServer) # 开启一个线程
server.serve_forever()

参考:
https://www.jb51.net/article/145995.htm

最新文章

  1. xamarin UWP平台下 HUD 自定义弹窗
  2. class-dump-z下载地址
  3. JMeter脚本参数化和断言设置( CSV Data Set Config )
  4. php生成json和js解析json
  5. 原理图及PCB设计
  6. 熊掌号:"搜索+信息流"双引擎与"百家号+熊掌号"双品牌内容平台
  7. 深入学习JS执行--单线程的JS
  8. 1105 Spiral Matrix
  9. 'QuerySet' object has no attribute '_meta'
  10. Chemical table CodeForces - 1012B
  11. 【SSH网上商城项目实战15】线程、定时器同步首页数据(类似于博客定期更新排名)
  12. Linux下定时任务Crontab的使用
  13. 第53天:鼠标事件、event事件对象
  14. oracle驱动包maven下载失败解决
  15. 1.4 Application应用
  16. GreenPlum 大数据平台--外部表(三)
  17. bzoj4756 [Usaco2017 Jan]Promotion Counting
  18. VB.NET概述
  19. 51nod1091(贪心)
  20. ubuntu16.04安装 java JDK8

热门文章

  1. win10远程桌面 CredSSP加密Oracle修正的解决办法
  2. CSS关于选择器和继承的一些小问题:
  3. Part_five:Redis哨兵高可用
  4. 常用 SQL*Plus 命令
  5. mysql 的使用
  6. 实战OpenGLES--iOS平台使用OpenGLES渲染YUV图片
  7. 【代码片段】定时记录CPU使用率并保存为CSV
  8. 阅读笔记---第三章 Xen信息页
  9. mysql 开启日志与性能调优
  10. Java必备技能:clone浅克隆与深克隆