作者:瑞铭与我_109 | 来源:互联网 | 2023-08-14 13:25
使用Python Socket UDP广播消息(测试大数据流式处理)
以下代码基于Python 3.8.x
;在Window 10环境下测试无误。
Server
发送广播消息;
from socket import *SERV = socket(AF_INET, SOCK_STREAM)
HOST = '127.0.0.1'
p = input('set port(default 9999):')
PORT = int(p) if p else 9999SERV.bind((HOST, PORT))
SERV.listen(5)print('server startup, port: %d ..' % PORT)while True:print('waiting ..')sock, addr = SERV.accept()print('[%s:%d]: ready ..' % (addr[0], addr[1]))try:while True:data = input('[%s:%d]: ' % (addr[0], addr[1]))sock.send((data + '\n').encode('utf8'))except:print('disconnected ..')
注意:如果是Java客户端,一定要带上\n
这个标记。
Server(可指定端口,同时启动多个端口)
from socket import *SERV = socket(AF_INET, SOCK_STREAM)
HOST = '127.0.0.1'
p = input('set port(default 9999):')
PORT = int(p) if p else 9999SERV.bind((HOST, PORT))
SERV.listen(5)print('server startup, port: %d ..' % PORT)while True:print('waiting ..')sock, addr = SERV.accept()print('[%s:%d]: ready ..' % (addr[0], addr[1]))try:while True:data = input('[%s:%d]: ' % (addr[0], addr[1]))sock.send((data + '\n').encode('utf8'))except:print('disconnected ..')
Client(非必须,测试使用)
用于接收消息;
实际场景为Flink
或者Spark Streaming
接收数据,最优方案为MQ,但测试环境部署较为麻烦,所以用Socket替代。
from socket import *HOST = '127.0.0.1'
PORT = 9999sock = socket(AF_INET, SOCK_DGRAM)
sock.bind((HOST, PORT))while True:try:data = sock.recv(1024)print(data.decode('utf8'))except Exception as e:print(e)