接下来呢, 我们必须要进行一个把绑定这个操作, 然后把它绑定到一个比较特定的地址上面去,还要加上那个端口的编号, 目的就是要能够监听来自外界的连接的请求了。
server_address = ('localhost', 10000)print('Starting up on {} port {}'.format(*server_address))
sock.bind(server_address)
3. 监听连接请求
在完成地址和端口的绑定工作之后, 我们就需要让当前实例处于一种持续的监听状态, 这样做的目的是为了能够正常地接受来自其他客户端发起的连接请求。。
sock.listen(1)4. 接受连接, 然后传输数据。
当监听状态一旦达成之后, 我们便能够接纳来自客户端的连接请求, 同时可以实施数据的传输工作。
while True:print('Wting for a connection')
connection, client_address = sock.accept()
try:
print('Connection from', client_address)
while True:
data = connection.recv(16)
print('Received {!r}'.format(data))
if data:
connection.sendall(data)
else:
break
finally:
connection.close()
二、HTTP请求
HTTP请求这种网络通信的方法, 它是大家经常用到的一种, 它特别适合那种一问一答的请求响应模型。用某某库来发送一个HTTP请求, 这个过程变得是非常之简单了。
1. 把那个库给安装上。
咱们得先把那个库给装了, 这个事儿是第一步。
pip install requests2. 现在, 我们会发出一个GET请求。
大家使用这个库去发送一个get请求, 真的是非常容易做到的事情。
import requestsresponse = requests.get('https://api.example.com/data')
print(response.status_code)
print(response.text)
3. 请求被发出, 使用的是 POST 方式。
除此之外, 大家还是有可能去发那种名为POST的请求的, 通过这种方式来把一些数据传送到服务器端上面去的。
import requestspayload = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://api.example.com/data', data=payload)
print(response.status_code)
print(response.text)
三、消息队列
消息队列是一种采取异步方式进行通信的手段, 它被频繁地运用在相互之间需要传输数据的分布式系统里头面, 并且Kafka这个系统也是属于常见的消息队列系统。
1. 使用
首先, 你要先确认一下pika库这个玩意儿, 是不是已经装到你的电脑上面去了:
pip install pika接着, 你需要去创建一个生产者, 然后再去创建一个消费者, 让它们分别负责把消息发送出去以及把消息接收过来。
import pika连接到RabbitMQ服务器
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
创建一个队列
channel.queue_declare(queue='hello')
发送消息
channel.basic_publish(exchange='', routing_key='hello', body='Hello World!')
print(" [x] Sent 'Hello World!'")
关闭连接
connection.close()
import pika连接到RabbitMQ服务器
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
创建一个队列
channel.queue_declare(queue='hello')
定义回调函数来处理消息
def callback(ch, method, properties, body):
print(" [x] Received %r" % body)
告诉RabbitMQ使用回调函数来接收消息
channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=True)
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()
四、进行实时通信
它是这样一种东西, 属于那种会在一个单独的TCP连接上面去进行全双工通信的协议, 它比较适用于那些需要实时处理的场景或者应用。因为有了这个库的存在, 导致在某地使用它这件事变得非常简单起来。
1. 把那个库给安装上。
咱们得先把那个库给装了, 这个事儿是第一步。
pip install websockets2. 创建服务器
就是去弄一个那个简简单单的单机的服务器的。
import asyncioimport websockets
async def echo(websocket, path):
async for message in websocket:
await websocket.send(message)
start_server = websockets.serve(echo, "localhost", 8765)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
3. 创建一个客户端。
你要创建一个简单的客户端。
import asyncioimport websockets
async def hello():
uri = "ws://localhost:8765"
async with websockets.connect(uri) as websocket:
await websocket.send("Hello World!")
response = await websocket.recv()
print(response)
asyncio.get_event_loop().run_until_complete(hello())
大家通过刚才讲的那个办法, 能够用搞代码的方式实现好几种不同的传输信息的手段, 像是有时候可以通过打HTTP请求来传, 有时候可以用消息队列这种机制来传,还有些时候需要做那种实时的通信操作, 这些情形下, 大家都可以根据自己实际需要的那些状况, 去选一个最对路的办法出来。
相关问答FAQs:
我们应当搞清楚, 到底是什么方式能够被用来实现信息的传输这一项基本任务。
在进行信息传输的时候, 是可以采用多种方式的, 这里面就涵盖了网络编程、传输文件以及使用API这些内容。大家最经常用到的办法, 是通过编写代码来完成, 并且在使用TCP协议或者UDP协议的前提下, 把信息发送给对方并且接收来自对方的信息。
另外, 也是能够借助于HTTP这个请求工具, 去通过API的形式实现数据层面的交换动作的。对于刚刚开始学习的这类人群来说, 我们强烈建议先拿编程这个方式练手, 去深入了解关于客户端还有服务端这两大核心概念到底是什么回事的。。
在这些库当中, 有哪些是能够被用来帮忙实现信息传输功能的呢。
开发者能够借助一些相当有力的工具库, 以此来将信息传输的工作流程给简化掉。比方说, 用某一个特定的库去搭建网络应用是可行的, 再用另一个库去做HTTP请求这件事也是可以办到的, 此外还有专门的库用来搞定SSH连接以及文件传输, 而在处理FTP的时候又有对应的库被派上用场。
只要能把这些库的各自特点看清楚并且选得妥当的话, 那么在做信息传输相关任务的时候, 效率就能得到提升, 从而让工作变得更轻松、更高效。。
当我们在进行信息传递这个动作的时候, 究竟是用什么样的方法, 才能够把数据的安全这个事情给确保住。
为了要保证把信息的传输安全性搞好, 人们是采用了好几种不同的办法的。头一个方法呢, 就是用加密技术来处理那些在传输当中发生作用的数据, 使得数据被加密后边的那些情况就是如果数据让坏人给截获了的话, 那也是完全没办法去弄懂里面的内容的。
第二个做法是利用叫做HTTPS的这种协议来进行那种安全的HTTP请求, 这样做的好处是能够保护住数据在被传输的过程当中, 不让别人给偷走掉了。
再有一个就是说要实施身份验证这个东西机制还有去使用一些被称为是安全的那种通讯方面的协议比如像是SSH这样的东西也行, 这样做也是能够在很大程度上来增加信息的传输的这个安全性水平的。