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

  数据在网络上进行传播,需要通过一种通信协议。常见的通信协议有: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. SDK编程之多线程编程

    本课中,我们将学习如何进行多线程编程.另外我们还将学习如何在不同的线程间进行通信. 理论:前一课中,我们学习了进程,其中讲到每一个进程至少要有一个主线程.这个线程其实是进程执行的一条线索,除此主线程外 ...

  2. sql必知必会笔记

    1.DISTINCT 用于剔除重复的值, 如果后跟多个列, 则要求所有列的值都相同才会被剔除.    SELECT DISTINCT ven_id, prod_price FROM Products; ...

  3. web1 - HTML&CSS

    Brackets 编辑器的安装和使用 Emmet:HTML/CSS代码快速编写 HTML && CSS

  4. 一不小心把Mysql数据库的root的账号的权限给弄没啦,该怎么办

    别急啊,现在只要你还能连接到Mysql,就问题不大! 首先,连接道Mysql,这里用Navicat进行讲解. 说明:root@localhost和root@127.0.0.1不是一个账号,也不是一回事 ...

  5. iOS-UI控件优化

    一.tableView的优化 tableView作为iOS开发中使用最为频繁的控件之一,对其进行优化,对整个应用性能的提升显得至关重要.官方设计的框架中,已经包含了UITableViewCell的重用 ...

  6. Linux下ACL权限控制以及用sudo设置用户对命令的执行权限

    ACL权限分配 1.setfacl命令设置文件权限 setfacl -m u:user1:rw root.txt setfacl -m u:user2:rwx root.txt 2.getfacl命令 ...

  7. 浙江省赛 C What Kind of Friends Are You?

    思路:一开始考虑n个朋友可以有c种可能,根据回答的问题,如果是yes那么可以确定一些朋友的范围,将原本不在这个范围内的删除即可:如果是"no",说明这些朋友都应该被删除,那么最后看 ...

  8. SpringBoot整合SpringSecurity,SESSION 并发管理,同账号只允许登录一次

    重写了UsernamePasswordAuthenticationFilter,里面继承AbstractAuthenticationProcessingFilter,这个类里面的session认证策略 ...

  9. 【java学习笔记】文件操作

    文件操作 java.io.File ①创建删除文件及目录 ②查看文件及目录属性 ③文件过滤器 (PS:不包括文件读写数据) 1.单个文件 创建单个文件,查看属性,删除单个文件. package tmp ...

  10. ap module omap4460

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