概述
您的代码有一些问题,但可能会解决您的问题的代码是
SO_REUSEADDR
插座选项:
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
创建套接字后(使用
socket.socket(...)
但是
之前
你试图绑定到一个地址
s.bind()
.
在其他方面,代码的两个“半部分”是非常不一致的——比如您从两个不同的地方复制和粘贴代码并尝试使用它们?
(一个使用上下文管理器和python 3
语法,而另一个使用python 2
打印
语法…
但是我已经编写了足够多的socket程序,我几乎可以破译任何东西,所以这里是您的代码的一个工作版本(带有一些非常次优的参数,例如缓冲区大小为1,但是您希望如何捕获一个
;
?)
服务器:
import socket
HOST = '127.0.0.1' # The server's hostname or IP address
PORT = 8192 # The port used by the server
BUFFER_SIZE = 1
def server_socket():
data = []
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((HOST,PORT))
s.listen()
while 1: # Accept connections from multiple clients
print('Listening for client...')
conn, addr = s.accept()
print('Connection address:', addr)
while 1: # Accept multiple messages from each client
buffer = conn.recv(BUFFER_SIZE)
buffer = buffer.decode()
if buffer == ";":
conn.close()
print("Received all the data")
for x in data:
print(x)
break
elif buffer:
print("received data: ", buffer)
data.append(buffer)
else:
break
server_socket()
客户:
import socket
import json
HOST = '127.0.0.1' # The server's hostname or IP address
PORT = 8192 # The port used by the server
def json_message(direction):
local_ip = socket.gethostbyname(socket.gethostname())
data = {
'sender': local_ip,
'instruction': direction
}
json_data = json.dumps(data, sort_keys=False, indent=2)
print("data %s" % json_data)
send_message(json_data + ";")
return json_data
def send_message(data):
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.sendall(data.encode())
data = s.recv(1024)
print('Received', repr(data))
json_message("SOME_DIRECTION")
最后
以上就是迷你蜜蜂为你收集整理的socket python json_正在将JSON对象发送到使用python的TCP侦听器端口的全部内容,希望文章能够帮你解决socket python json_正在将JSON对象发送到使用python的TCP侦听器端口所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复