1. ホーム
  2. windows

[解決済み] Python 3 on Windows: `TypeError: an integer is required (got type str)`.

2022-03-05 05:14:58

質問

WindowsのPython3で簡単なポートスキャナ、またはquot;telnetテスト"を書こうとしているのですが、どうすればよいでしょうか?

残念ながら、コードを実行すると以下のエラーが発生します。

出力

C:\Python\Codes>python test.py

Destination IP Address: 127.0.0.1
Port number: 2020
Host 127.0.0.1 port 2020
Traceback (most recent call last):
  File "test.py", line 12, in <module>
    SCAN_TCP_PORT()
  File "test.py", line 9, in SCAN_TCP_PORT
    s.connect((DstIP, DstPort))
TypeError: an integer is required (got type str)

C:\Python\Codes>

私はググって、このリンクを見つけたが、それは私の問題と関連していない。

Pythonはなぜ"an integer is required"を出すのでしょうか?

9行目の私のコードのどこが悪いのでしょうか?また、それを修正する方法は?

エラー

  File "test.py", line 9, in SCAN_TCP_PORT
    s.connect((DstIP, DstPort))
TypeError: an integer is required (got type str)

コード

#!/usr/bin/env python
import sys, os, socket

def SCAN_TCP_PORT():
    DstIP = input('\nDestination IP Address: ')
    DstPort = input('Port number: ')
    print ('Host %s port %s' % (DstIP, DstPort))
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((DstIP, DstPort))
    print("%s is listening on TCP port %s" % (DstIP, DstPort))

SCAN_TCP_PORT()

どのように解決するのですか?

DstPort の値を整数値にキャストする必要があります。 s.connect((DstIP, DstPort))s.connect((DstIP, int(DstPort)))