DOBON.NETプログラミング道掲示板
(現在 過去ログ1 を表示中)

[ 親記事をトピックトップへ ]

このトピックに書きこむ

過去ログには書き込み不可

■32965 / inTopicNo.1)  Re[2]: 送受信で同一ポートを使用したUDP通信について(Windowsサービス)
  
□投稿者/ ks 一般人(4回)-(2015/05/21(Thu) 16:30:41)
  • アイコン2015/05/21(Thu) 17:21:29 編集(投稿者)
    2015/05/21(Thu) 17:21:26 編集(投稿者)

    自己レスです。

    問題解決致しました。
    Windowsファイアーウォールが原因でした。
    サービスを例外設定したところ正常に動き始めました。

    お騒がせしてしまい大変申し訳ありませんでした。

解決み!
引用返信 削除キー/
■32964 / inTopicNo.2)  Re[1]: 送受信で同一ポートを使用したUDP通信について(Windowsサービス)
□投稿者/ ks 一般人(3回)-(2015/05/21(Thu) 11:52:39)
  • アイコン自己レスです。

    その後、いろいろ試したところ、同期・非同期にかかわらず
    Windowsサービス(LocalSystem)にするとポートを開いて
    受信待ちしていてもコールバックされないことがわかりました。

    さらに、一回だけブロードキャストなどで受信待ちしている
    UdpClientを使用して適当なパケットを送信すると、その後は
    正常にコールバックされるようです。

    なぜアプリケーションのときとサービスのときで挙動が変わる
    のかは謎のままですし、適当なパケットを送信したくないので
    正しい処理が知りたいところです。。。


引用返信 削除キー/
■32956 / inTopicNo.3)  送受信で同一ポートを使用したUDP通信について(Windowsサービス)
□投稿者/ ks 一般人(1回)-(2015/05/18(Mon) 13:07:48)
  • アイコン環境/言語:[Windows7 64bit/VB.net] 
    分類:[.NET] 

    UDPによって通信するWindowsサービスを作成しているのですが、
    以下のパターンのときに上手くいきません。
    ・送受信で同一のポートを使用(ポートを分けると正常動作します)
    ・受信を非同期で行い、受信内容を確認後返信
    また、全く同じコードでWindowsアプリケーションにすると正常に動作しています。
    実際のコードは以下のように書いてます。

    Imports System.Net
    Imports System.Net.NetworkInformation
    Public Class Service1
    Public S1 As UDPState1
    Private UsePort As Integer = 11000

    Protected Overrides Sub OnStart(ByVal args() As String)
    S1 = New UDPState1()
    S1.e = New Net.IPEndPoint(Net.IPAddress.Any, UsePort)
    S1.u = New Net.Sockets.UdpClient(S1.e)
    S1.u.BeginReceive(AddressOf ReceiveCallBack, S1)
    End Sub

    Protected Overrides Sub OnStop()

    End Sub

    Private Sub ReceiveCallBack(ByVal AR As IAsyncResult)
    Try
    Dim receiveBytes As Byte() = S1.u.EndReceive(AR, S1.e)
    '受信データ解析

    Dim send_bytes() As Byte = {0, 1, 2, 3, 4, 5}
    S1.u.Send(send_bytes, send_bytes.Length, S1.e.Address.ToString, UsePort)
    Catch ex As Exception
    End Try

    S1.u.BeginReceive(AddressOf ReceiveCallBack, S1)
    End Sub
    End Class


    'ソケット通信用クラス
    Public Class UDPState1
    Public e As Net.IPEndPoint
    Public u As Net.Sockets.UdpClient
    End Class


    別のPCからこのサービスに対してデータを送信すると、
    『ReceiveCallBack』が呼び出されていないようでした。
    netstatコマンドでこのサービスによってポートが開けられて
    いるのは確認できました。

    どうすればWindowsサービスで動作できるでしょうか。。
    ご教授お願い致します。

引用返信 削除キー/



トピック内ページ移動 / << 0 >>
Mode/  Pass/


- Child Tree -