这里写一个例子,利用socket为 Spark Stream提供数据
socket.error: [Errno 48] Address already in use
需要把so_reuseaddr设置为1,这样在关闭socket对象后可以重复使用地址
import socket
from time import sleep
host = 'localhost'
port = 9999
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#设置SO_REUSEADDR为1,使得关闭socket之后依旧可以重复使用地址
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host, port))
s.listen(1)
print('\nListening for a client at',host , port)
# 等待连接
conn, addr = s.accept()
print('\nConnected by', addr)
count = 0
try:
while True:
line = [str(random.randint(1,20)) for x in range(random.randint(5,15))]
line = ",".join(line)+"\n"
conn.send(line.encode('utf-8'))
sleep(2)
count += 1
#只发20次,发送完毕收就停止
if count == 20:
conn.close()
except socket.error:
print ('Error Occured.\n\nClient disconnected.\n')
#关闭socket
s.shutdown(socket.SHUT_RDWR)
s.close()