【问题标题】:Why does socket.bind() expect an integer here?为什么 socket.bind() 在这里期望一个整数?
【发布时间】:2020-02-15 14:43:49
【问题描述】:

我对网络编程非常陌生。我正在尝试设置 Web 服务器,并尝试将欢迎套接字绑定到 localhost 地址和作为命令行参数传递的任意端口号。但是,socket.bind() 方法总是给我错误,说它需要一个整数而不是一个字符串,而据我从文档中可以看出,主机地址应该是一个字符串。

我已尝试使用 gethostname、gethostbyname 以及两者的组合来解决此错误,但似乎没有任何效果。

这是我编写的程序的 sn-p:

from socket import *
import sys

port_number = sys.argv[1]
server_sock = socket(AF_INET, SOCK_STREAM)
host = gethostbyname(gethostname())
print(host)
server_sock.bind((host, port_number))
server_sock.listen(1)
print('The server is online.')

确切地说,这是我得到的错误:“TypeError: an integer is required (got type str)”

我该如何解决这个问题?

【问题讨论】:

    标签: python-3.x sockets network-programming bind


    【解决方案1】:

    端口需要是整数,所以将字符串port_number转换为整数:

    server_sock.bind((host, int(port_number)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-01
      • 2014-06-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多