ConnectionRefusedError: [WinError 10061] 対象のコンピューターによって拒否されたため、接続できませんでした。

Python
本ページはプロモーションが含まれています

はじめに

robtframework上からpythonのソースコードを呼び出しソケット通信を行っている際にエラーが発生しました。
今回はその時の原因と対処方法についてのメモです。

ソースコード&エラー

ソケットのサーバ側はフリーのアプリを利用していました。
robotframeworkとpythonのソースコードは次の通りです。

*** Settings ***
Library    socket_test.py

*** Variables ***
${IP_ADD}    127\.0\.0\.1

*** Keywords ***

*** Test Cases ***
Test
    ${return_wd}= py_socket    ${IP_ADD}    5000
    Log To Console    ${\n}${return_wd}

robotframeworkを実行してpythonのソケットを呼び出しています。

import socket
from robot.api import logger

def py_socket(ip_addr, port_num):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    param = (ip_addr, int(port_num))
    s.connect(param)
    print(ip_addr, 'Port:',  str(port_num), 'へ接続中')
    logger.console(ip_addr, 'Port:',  str(port_num), 'へ接続中')


    s.send(b'test')
    result = int(s.recv(256).decode().rstrip('\n'))
    
    return result

これを実行すると

PS C:\Users\****\Desktop\robotframework\socket> robot .\socket_test.robot
==============================================================================
Socket Test
==============================================================================
Test | FAIL |
ConnectionRefusedError: [WinError 10061] 対象のコンピューターによって拒否されたため、接続できませんでした。
------------------------------------------------------------------------------
Socket Test | FAIL |
1 test, 0 passed, 1 failed
==============================================================================

エラーメッセージ

「ConnectionRefusedError: [WinError 10061] 対象のコンピューターによって拒否されたため、接続できませんでした。」

が表示されました。

原因と対処方法

原因は指定したポート番号でした。
ポート番号によっては既に利用されているものがあり、今回はそれに該当した(ようです)

ポートが合いているかを確認するには、
Windowsの場合、コマンドかコントロールパネル(ファイヤーウォール)から確認出来ます。

コマンドの場合は、プロンプトを開いて

netstat -an

を実行。

コントロールパネルの場合、スタート下の検索ボックスで「コントロールパネル」と入力。
コントロールパネルを開いた後に「システムとセキュリティ」→「Windows Defender ファイヤーウォール」を選びます。
左にある「詳細設定」をクリックするとWindows Defenderの詳細が表示されます。

そこで受信、送信のそれぞれの利用状況が確認出来ます。

また、ポート番号に指定がない場合は誰でも任意に使用できる「49152〜65535」を使うのが良いかと思います。

さいごに

今回はポート番号による通信が出来ない問題でした。
通信に詳しくない場合ポート番号が悪さをしている等わからない(最初は僕もさっぱりでした)ので、起こりうるエラーかと思います。

この記事がお役に立ったのなら嬉しいです。
最後までお読みいただきありがとうございます。

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

タイトルとURLをコピーしました