---恢复内容开始---

  数据在网络上进行传播,需要通过一种通信协议。常见的通信协议有:HTTP,SMTP,DNS,FTP,SSH,SNMP,ICMP PING,DNCP.

  OSI(Open System Interconnect)七层协议:(

  

  在python中如何实现数据的传播呢?答案就是socket,Python将TCP/IP和UDP一起封装在了socket中。

  在socekt实例中有两个很重要的参数 1 地址簇 2 协议类型。这两个参数将直接影响到通信的建立。

FAMILY ADDRESS
AF.INET ==> IPv4,
AF.INET6 ==> IPv6
AF.UNIX ==> local (不常用)
PROTOCOL TYPE
SOCK_STREAM ==> TCP/IP协议
SOCK_DGRAM ==> UDP
默认的实例建立为AF.INET,sock.SOCK_STREAM

  首先建立两个端:服务器端(server)和客户端(client)。

  先来看两个最简单的例子:

  客户端:

#客户端

import socket#引入socket方法
client = socket.socket()#声明socket的类型,同时生成socket的连接对象
client.connect(('localhost',6969))#连接的端口号和端口名
client.send(b"Im client")#需要发送的数据
data = client.recv(1024)#默认最大接收的字节数
print('recv:',data)#打印接收到的数据
client.close()#关闭客户端

  服务器端:

import socket
server = socket.socket()
server.bind(('localhost',6969))#绑定需要监听的端口
server.listen()#开始监听,括号内可设置最大的可监听数量
print('Im starting listening')
conn,addr = server.accept()#等活动开始,accept 将返回两个值,分别送到conn和addr中,conn就是客户端对应在服务器端的连接实例
print("listened")
data = conn.recv(1024)#赋值变量储存接接收客户端的数据,最大为1024byte
print('recv:',data)
conn.send(data.upper())#将从客户端收来的数据大写 server.close()

  那么现在实现了一对一的单次交互,如果想实现一对一的多次交互呢?

  使用while True循环:

  客户端:

while True:
msg = input('>>:'.strip())
client.send(msg.encode('utf-8'))#需要发送的数据
data = client.recv(1024)#默认最大接收的字节数
print('recv:',data)#打印接收到的数据

  服务器端:

while True:
print("listened")
data = conn.recv(1024)
print('recv:',data)
conn.send(data.upper())

  由以上可以看出不管是客户端还是服务器端均是将循环建立在已经确立连接端口之后,即不会重新建立新连接,使用同一端口进行循环通信,这是一对一同一对象进行循环交互的方法。

  如果想要实现两个甚至多个客户端与服务器端进行交互怎么办呢?类似打电话,现在已经建立了连接,当有第二个客户打入的时候会提示说占线请等待。那么在python中应该如何实现呢?

  同样也是while循环。

while True:
conn,addr = server.accept()#等活动开始,conn就是客户端对应在服务器端的连接实例

  此次循环加在接收端口号和地址的前面,表示每被客户端挂断一次便进行一次循环再次与第二个客户端建立通信,达到与多个客户端通信的需求。

python socket知识点的更多相关文章

  1. Python Socket 编程——聊天室示例程序

    上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...

  2. Python Socket 网络编程

    Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页.QQ ...

  3. python socket发送魔法包网络唤醒开机.py

    python socket发送魔法包网络唤醒开机.py 现在的电脑应该都普遍支持有线网络的WOL了,支持无线网络唤醒的电脑,可能比较少. """ python socke ...

  4. Python socket编程之二:【struct.pack】&【struct.unpack】

    import struct """通过 socket 的 send 和 recv 只能传输 str 格式的数据""" "" ...

  5. Python Socket,How to Create Socket Server? - 网络编程实例

    文章出自:Python socket – network programming tutorial by Silver Moon 原创译文,如有版权问题请联系删除. Network programin ...

  6. Python Socket,How to Create Socket Cilent? - 网络编程实例

    文章出自:Python socket – network programming tutorial by Silver Moon 原创译文,如有版权问题请联系删除. Network programin ...

  7. Python Socket通信原理

    [Python之旅]第五篇(一):Python Socket通信原理   python Socket 通信理论 socket例子 摘要:  只要和网络服务涉及的,就离不开Socket以及Socket编 ...

  8. Python Socket单线程+阻塞模式

    Python之旅]第五篇(二):Python Socket单线程+阻塞模式 python Socket单线程 Socket阻塞模式 串行发送 摘要:  前面第五篇(一)中的一个Socket例子其实就是 ...

  9. python socket之tcp服务器与客户端demo

    python socket之tcp服务器与客户端demo 作者:vpoet mails:vpoet_sir@163.com server: # -*- coding: cp936 -*- ''' 建立 ...

随机推荐

  1. POJ 1023 The Fun Number System

    Description In a k bit 2's complement number, where the bits are indexed from 0 to k-1, the weight o ...

  2. linux查看端口被占用等常用命令

    一   根据端口号 查找对应的服务 比如我们查查找端口号8189对应的服务是哪个 1  先根据端口号查找对应对的pid(进程id)为23367 netstat -anp  | grep 8189    ...

  3. VNCServer,SSH Secure Shell Client,window远程控制linux

    1.VNC远程连接linux图形化桌面 2.SSH Secure Shell Client连接linux终端 3.设置FTP与linux传输文件 1.VNC远程连接linux图形化桌面 在centos ...

  4. Django开发基础----操作数据库

    Django中对数据库的操作是由Models来完成的 Models是什么? 通常,一个Model对应数据库的一张数据表 Django中Models以类的形式出现 它包含了一些基本字段以及数据的一些行为 ...

  5. Typescript 基础应用

    什么是 TypeScript TypeScript 是微软开发的 JavaScript 的超集,TypeScript兼容JavaScript,可以载入JavaScript代码然后运行.TypeScri ...

  6. ap module omap4460

    http://gitorious.org/ap-module-omap4460 Dashboard Register Login Activities Projects Teams ap module ...

  7. V4L2驱动的移植与应用(一)

    V4L2(video for linux) 可以支持多种设备,它可以有以下5种接口: 1.视频采集接口(video capture interface):这种应用的设备可以是高频头或者摄像头.V4L2 ...

  8. 浅析设备管理的MTTR,MTTF,MTBF计算方法

    一般来说,对于设备的关键性指标的统计,国际惯例中有三个指标用来进行统计,它们分别是: MTTR(Mean Time To Repair),平均修复时间.计算方法是:总的故障时间/故障次数.计算公式为: ...

  9. ClientToScreen 和ScreenToClient 用法

    ClientToScreen( )是把窗口坐标转换为屏幕坐标 ScreenToClient( )是把屏幕坐标转换为窗口坐标 屏幕坐标是相对于屏幕左上角的,而窗口坐标是相对于窗口用户区左上角的 VC下, ...

  10. HighCharts之2D条状图

    HighCharts之2D条状图 1.HighCharts之2D条状图源码 bar.html: <!DOCTYPE html> <html> <head> < ...