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

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

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

ソケット

TCP/IPにおいて、IPアドレスとサブアドレスであるポート番号を組み合わせたネットワークアドレスのことを呼びます。また、ソフトウェアアプリケーションにおいて、TCP/IP通信を行う為の仮想的なインターフェースという意味もある。

UDP

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

Q&A

解決済

1回答

3636閲覧

UDP通信時に受信状態からプログラムが動かなくなる問題を解決したい

heiroh

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

ソケット

TCP/IPにおいて、IPアドレスとサブアドレスであるポート番号を組み合わせたネットワークアドレスのことを呼びます。また、ソフトウェアアプリケーションにおいて、TCP/IP通信を行う為の仮想的なインターフェースという意味もある。

UDP

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

0グッド

0クリップ

投稿2021/07/28 17:18

C#でUDPを用いてデータの送受信を行おうとしているのですが、片方が受信状態でもう片方から送信を行っているのにもかかわらず受信状態から動かない

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

2台のパソコンA、Bを使っていて、AからBの送信は上手くいくのですが、BからAの送信が上手くできない状態です。
エラーメッセージなどは見れなく、コードの途中で止まっています。

該当のソースコード

remoteHost      //送信先(相手)のIPアドレス
myHost       //受信先(自分)のIPアドレス
myPort = 2002;   受信先のポート番号
yourPort = 2003;  送信先のポート番号
port_snd = 2001; 送信用のポート番号

public bool init(int port_snd, int port_to, int port_rcv) {
try{
System.Net.IPAddress localAddress = System.Net.IPAddress.Parse(myHost);
System.Net.IPEndPoint localEP = new System.Net.IPEndPoint(localAddress, myPort);
udpForReceive = new System.Net.Sockets.UdpClient(localEP);
udpForSend = new UdpClient(port_snd);
}
catch{ return false;
}}

public void send(string sendMsg) {
try
{
byte[] sendBytes = Encoding.ASCII.GetBytes(sendMsg);
udpForSend.Send(sendBytes, sendBytes.Length, remoteHost, yourPort);
}
catch { }}

public void receive()
{
//IPEndPoint remoteEP = null;
while (true){
try{
System.Net.IPEndPoint remoteEP = null;
byte[] rcvBytes = udpForReceive.Receive(ref remoteEP);
rcvMsg = System.Text.Encoding.UTF8.GetString(rcvBytes);

上の一文を通過すると動かなくなります。

}
catch { }}
}

試したこと

Aのfirewallの確認を行いました。
また別のパソコンCを使って同一のプログラムでBC間の通信は可能でした。
Aのパソコンでしか利用できないハードがあり、どうしても通信を行いたいのですが、プログラム内でのエラー、または考えられる設定の不足などがあれば教えていただきたいです。

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

visual studio 2019 で動かしています。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

firewallを一度全解除してみたところ一応繋がったので原因はfirewallでした。

投稿2021/07/28 17:39

heiroh

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問