62521


以下の記事にて紹介されているPythonのUDP通信のサンプルを  
TCPに書き直したいです。

[PythonによるUDP通信 - Qiita](https://qiita.com/akakou/items/e9fbcfc0c69cc957152e)

SOCK_DGRAMをSOCK_STREAMに書き換えるだけではエラーが出て動きませんでした。

**TCPSend.py**

[code]

    from socket import socket, AF_INET, SOCK_STREAM
    
    HOST = ''
    PORT = 5000
    ADDRESS = "127.0.0.1"
    
    s = socket(AF_INET, SOCK_STREAM)
    
    while True:
        msg = 'print("test")\n'
        s.sendto(msg.encode(), (ADDRESS, PORT))
    s.close()
    
[/code]

**TCPRecieve.py**

[code]

    from socket import socket, AF_INET, SOCK_STREAM
    
    HOST = ''
    PORT = 5000
    
    s = socket(AF_INET, SOCK_STREAM)
    s.bind((HOST, PORT))
    
    while True:
        msg, address = s.recvfrom(8192)
        exec(msg.decode('utf-8'))
    
    s.close()
    
[/code]

エラー内容は以下の通りです。

[code]

    UDPSend.py", line 11, in <module>
        s.sendto(msg.encode(), (ADDRESS, PORT))
    OSError: [WinError 10057] ソケットが接続されていないか、sendto 呼び出しを使ってデータグラム ソケットで送信するときにアドレスが指定されていないため、データの送受信を要求することは禁じられています。
    
[/code]

SOCK_DGRAM、SOCK_STREAMの箇所以外にどこを書き換えればUDPからTCPにできるのでしょうか？


CC BY-SA 4.0
2020-01-24T00:56:14.677
62503
2020-01-24T14:45:26.197
2020-01-24T03:21:43.967
34471
34471
question
python socket tcp udp
UDPで書かれたコードをTCPに書き直したい


TDPが、送りっぱなし（データが届いたかどうかの確認ができない）の簡単なプロトコルであるのに対して、TCPは送達確認や分割送信などの機能を持ったちょっと複雑なプロトコルです。

Qiitaの[pythonでsocket通信を勉強しよう](https://qiita.com/__init__/items/5c89fa5b37b8c5ed32a4)の記事の説明が判りやすいと思います。（Pythonのプログラム例もあります）


CC BY-SA 4.0
2020-01-24T06:24:34.233
62511
2020-01-24T06:24:34.233
217
62503
answer


公式ドキュメントにTCPでの送信側と受信側のコード例があります。  
<https://docs.python.org/ja/3/library/socket.html#example>


CC BY-SA 4.0
2020-01-24T14:45:26.197
62521
2020-01-24T14:45:26.197
806
62503
answer