質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
UDP

UDP(User Datagram Protocol)とは、トランスポート層のプロトコルであり、コネクション型のデータサービスです。IPネットワーク上の別のホストにコンピュータのアプリケーションがメッセージを送ることができ、転送チャンネルやデータ経路を設定する必要はありません。TCPに比べて高速であるが、信頼性が薄いという特徴があります。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

python UDP通信

eggkun
eggkun

総合スコア7

UDP

UDP(User Datagram Protocol)とは、トランスポート層のプロトコルであり、コネクション型のデータサービスです。IPネットワーク上の別のホストにコンピュータのアプリケーションがメッセージを送ることができ、転送チャンネルやデータ経路を設定する必要はありません。TCPに比べて高速であるが、信頼性が薄いという特徴があります。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

0リアクション

0クリップ

573閲覧

投稿2021/08/04 05:38

編集2021/08/04 06:01

前提・実現したいこと

pythonでタイピングゲームを作っています.
ゲームの結果に伴い評価コメントをUDP通信を用いて表示させようと考えています.
送信側のコードは行数が多いので省略しています.

発生している問題・エラーメッセージ

引数の数が合わないとなっていますが原因がわかりません.

エラーメッセージ udp.send(send_list[3]) TypeError: send() takes 1 positional argument but 2 were given

該当のソースコード

python

ソースコード # -*- coding: utf-8 -*- import tkinter as tk from tkinter import messagebox import sys import os import time import threading import pygame import pygame.mixer import wave import random from socket import * QUESTION = ["タイピングゲームの問題"] LIST = random.sample(QUESTION, 29) send_list = ["1", "2", "3", "4"] ## UDP送信クラス class udpsend(): def __init__(self): SrcIP = "127.0.0.1" # 送信元IP SrcPort = 11111 # 送信元ポート番号 self.SrcAddr = (SrcIP,SrcPort) # アドレスをtupleに格納 DstIP = "127.0.0.1" # 宛先IP DstPort = 22222 # 宛先ポート番号 self.DstAddr = (DstIP,DstPort) # アドレスをtupleに格納 self.udpClntSock = socket(AF_INET, SOCK_DGRAM) # ソケット作成 self.udpClntSock.bind(self.SrcAddr) # 送信元アドレスでバインド def send(self): data = "Hello" data = data.encode('utf-8') # バイナリに変換 self.udpClntSock.sendto(data, self.DstAddr) # 宛先アドレスに送信 class MyApp1(tk.Frame): def __init__(self, master=None): super().__init__(master) self.pack() ### ここにタイピングゲーム本体のプログラム ### #入力値がEnterの場合は答え合わせ if event.keysym == "Return": if self.q_label2["text"] == self.ans_label2["text"]: self.result_label.configure(text="正解!", fg="red") se_correct.play() self.correct_cnt += 1 else: self.result_label.configure(text="残念!", fg="blue") se_wrong.play() # 解答欄をクリア self.ans_label2.configure(text="") # 次の問題を出題 self.index += 1 if self.index == len(LIST): self.q_label2.configure(text="終了!") if 25 <= self.correct_cnt <= 29 : udp = udpsend() udp.send(send_list[0]) # 関数実行 se_perfect.play() res1 = messagebox.askyesno("単語の練習結果", f"単語のスコアは{self.correct_cnt}/{self.index}問正解だよ.") if res1 == True: self.restart() #os.execv(sys.executable, os.path.abspath(__file__)) elif res1 == False: sys.exit(0) elif 15 <= self.correct_cnt < 25: udp = udpsend() udp.send(send_list[1]) se_result.play() res2 = messagebox.askyesno("単語の練習結果", f"単語のスコアは{self.correct_cnt}/{self.index}問正解だよ.") if res2 == True: self.restart() #os.execv(sys.executable, os.path.abspath(__file__)) elif res2 == False: sys.exit(0) elif 10 <= self.correct_cnt < 15: udp = udpsend() udp.send(send_list[2]) se_result.play() res3 = messagebox.askyesno("単語の練習結果", f"単語のスコアは{self.correct_cnt}/{self.index}問正解だよ.") if res3 == True: self.restart() #os.execv(sys.executable, os.path.abspath(__file__)) elif res3 == False: sys.exit(0) elif 0 <= self.correct_cnt < 10: udp = udpsend() udp.send(send_list[3]) se_result.play() res4 = messagebox.askyesno("単語の練習結果", f"単語のスコアは{self.correct_cnt}/{self.index}問正解だよ.") if res4 == True: self.restart() #os.execv(sys.executable, os.path.abspath(__file__)) elif res4 == False: sys.exit(0) self.q_label2.configure(text=LIST[self.index]) elif event.keysym == "BackSpace": text = self.ans_label2["text"] self.ans_label2["text"] = "" #text[:-1] #else: #入力値がEnter以外の場合は文字入力としてラベルに追記する #self.ans_label2["text"] += event.keysym text = self.ans_label2["text"] text2 = self.q_label2["text"] この後も少しタイピングゲームのプログラム ここまでが送信側です # -*- coding: utf-8 -*- from socket import * import random ## UDP受信クラス class udprecv(): def __init__(self): SrcIP = "127.0.0.1" # 受信元IP SrcPort = 22222 # 受信元ポート番号 self.SrcAddr = (SrcIP, SrcPort) # アドレスをtupleに格納 self.BUFSIZE = 2048 # バッファサイズ指定 self.udpServSock = socket(AF_INET, SOCK_DGRAM) # ソケット作成 self.udpServSock.bind(self.SrcAddr) # 受信元アドレスでバインド def recv(self): while True: # 常に受信待ち data, addr = self.udpServSock.recvfrom(self.BUFSIZE) # 受信 if data == "1": print("こんにちは") # 受信データと送信アドレス表示 elif data == "2": print("bye") elif data == "3": print("gg") elif data == "4": print("dd") udp = udprecv() # クラス呼び出し udp.recv() # 関数実行

試したこと

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

UDP

UDP(User Datagram Protocol)とは、トランスポート層のプロトコルであり、コネクション型のデータサービスです。IPネットワーク上の別のホストにコンピュータのアプリケーションがメッセージを送ることができ、転送チャンネルやデータ経路を設定する必要はありません。TCPに比べて高速であるが、信頼性が薄いという特徴があります。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。