gpt4 book ai didi

Python 2.7 Socket 编程端口

转载 作者:行者123 更新时间:2023-11-30 22:08:55 25 4
gpt4 key购买 nike

我进行了端口轮播练习,这意味着我需要构建一个服务器客户端,服务器向客户端询问端口,然后他们开始监听给定的端口,这就是我得到的循环错误,我不知道如何修复它。

服务器:

import socket
import random

def main():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('0.0.0.0', 1729))
server_socket.listen(1)
(client_socket, server_socket) = server_socket.accept()

done = False
while not done:
port = client_socket.recv(4096)
client_socket.send('i got the port' + port)
port = int(port)

if port != 1:
server_socket.bind(('0.0.0.0', port))
continue
else:
done = True


if __name__ == '__main__':
main()

客户:

import socket
import random


def main():
print 'hi at anytime enter 1 to break the loop'
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('127.0.0.1', 1729))
done = False

while not done:
port = client_socket.send(raw_input("enter port:"))
data = client_socket.recv(4096)
print data
port = int(port)
if port != 1:
client_socket.connect(('127.0.0.1', port))
continue
else:
done = True
client_socket.close()


if __name__ == '__main__':
main()

服务器的错误输出:

File "C:/Cyber/ServerFolder/ports_carrousel.py", line 18, in main
server_socket.bind(('0.0.0.0', port))
AttributeError: 'tuple' object has no attribute 'bind'

最佳答案

在主函数中,您执行以下操作:

(client_socket, server_socket) = server_socket.accept()

但是,server_socket.accept()实际上返回两个对象。第一个是套接字对象,第二个是包含(sourceIPString,sourcePort)的元组。

因此,通过使用上面概述的这行代码,您实际上是用元组对象覆盖了 server_socket。请注意,稍后在第 18 行中,您尝试访问套接字的“bind”函数,但是使用对元组对象的引用,该函数并未实现此类函数。

你应该做的是类似的事情

(client_socket, client_connection_info) = server_socket.accept()

并相应地调整您的代码。

关于Python 2.7 Socket 编程端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52053884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com