C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: Winsock1コントロールによるマルチキャスト送受信


(過去ログ 94 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■56040 / inTopicNo.1)  Winsock1コントロールによるマルチキャスト送受信
  
□投稿者/ コアラ主任 (17回)-(2010/12/23(Thu) 17:38:19)

分類:[VB6 以前] 

開発環境(WinXPSP3、VB6SP6) 実行環境(XP,W2000)

Winsock1コントロールにて、マルチキャスト送受信しようとしています。
実行しても、送信側、受信側の反応が見られず、まずは、UDPユニキャスト
にて、特定のPCに送受信したところ、期待する動きをしました。
SETSOCKOPTに問題があるのか、ソケット(Winsock1)の設定に問題あるのか
の判別も付かず・・・。
以下のコーディングにて、問題ありそうなところにお気付きの方がおりましたら、
アドバイスの程、頂戴したく、よろしくお願いいたします。

====関連しそうと思われる部分=======================================================
《送信側》
Dim in_adr As Long
Dim lngRtn As Long

With Winsock1
.Close
.protocol = sckUDPProtocol
.RemoteHost = "224.1.1.1"
.RemotePort = 1902
End With

in_adr = inet_addr("127.0.0.1")
lngRtn = setsockopt(Winsock1.SocketHandle, IPPROTO_IP, IP_MULTICAST_IF, in_adr, Len(in_adr))
Winsock1.bind 1901
sdat = sdatC <--- バイト型データ
Call Winsock1.SendData(sdat)

《受信側》
With Winsock1
.Close
.protocol = sckUDPProtocol
.RemoteHost = "127.0.0.1"
.RemotePort = 1901
End With
in_adr = inet_addr("224.1.1.1")
lngRtn = setsockopt(Winsock1.SocketHandle, IPPROTO_IP, IP_ADD_MEMBERSHIP, in_adr, Len(in_adr))
で、待機。。。
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim buff() As Byte
Winsock1.GetData buff
Call data_send  <---届いたよ返してる
End Sub

=======================================================================================

以上、お気付きの点がありましたら、よろしくお願いいたします。

引用返信 編集キー/
■56048 / inTopicNo.2)  Re[1]: Winsock1コントロールによるマルチキャスト送受信
□投稿者/ shu (321回)-(2010/12/24(Fri) 09:39:09)
No56040 (コアラ主任 さん) に返信

参考URL:
http://support.microsoft.com/kb/131978/ja

> in_adr = inet_addr("224.1.1.1")
> ・・・・・ , in_adr, Len(in_adr))
この辺の指定が違っているようです。
引用返信 編集キー/
■56058 / inTopicNo.3)  Re[2]: Winsock1コントロールによるマルチキャスト送受信
□投稿者/ コアラ主任 (18回)-(2010/12/24(Fri) 18:15:51)
No56048 (shu さん) に返信
> ■No56040 (コアラ主任 さん) に返信
>
> 参考URL:
> http://support.microsoft.com/kb/131978/ja
>
>>in_adr = inet_addr("224.1.1.1")
>>・・・・・ , in_adr, Len(in_adr))
> この辺の指定が違っているようです。

C++?のサンプルのようですが、
受信側ですよね、

Public Type SOCKADDR
sin_family As Integer
sin_port As Integer
sin_addr As Long
sin_zero As String * 8
End Type
Private Type ip_mreq
imr_multiaddr As SOCKADDR
imr_interface As SOCKADDR
End Type

Dim mreq As ip_mreq

With Winsock1
.Close
.protocol = sckUDPProtocol
.RemoteHost = "127.0.0.1"
.RemotePort = 1902
   .bind 1902
End With

mreq.imr_interface.sin_addr = INADDR_ANY
mreq.imr_multiaddr.sin_addr = inet_addr("224.1.1.1")
lngRtn = setsockopt(Winsock1.SocketHandle, IPPROTO_IP, IP_ADD_MEMBERSHIP, mreq, Len(mreq))

のように、修正してみましたが、反応変わらず・・・。
lngRtnには、「-1」が返って来ているようです。。。
まだ、誤りがありそうでしょうか・・・。


引用返信 編集キー/
■56064 / inTopicNo.4)  Re[3]: Winsock1コントロールによるマルチキャスト送受信
□投稿者/ shu (323回)-(2010/12/25(Sat) 10:56:35)
No56058 (コアラ主任 さん) に返信

VBのページがなかなかないですね
送信:
http://publib.boulder.ibm.com/html/as400/v4r5/ic2962/info/RZAB6SENDMULTICAST.HTM

受信:
http://publib.boulder.ibm.com/html/as400/v4r5/ic2962/info/RZAB6RECVMULTICAST.HTM#SPTRECVMULTICAST

ここで一応一通りの流れが記述されているようなので確認してみてはどうでしょう?
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -