台灣最大程式設計社群網站
線上人數
655
 
會員總數:242479
討論主題:187514
歡迎您免費加入會員
討論區列表 >> VB.NET >> VB6 對 .NET UDP - SOCK 問題
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
VB6 對 .NET UDP - SOCK 問題
價值 : 30 QP  點閱數:238 回應數:2

樓主

許一書
門外漢
0 2
39 2
發送站內信

小弟我有兩個疑惑,都是使用UDP方式

目前小弟我有一隻.NET 程式必須 與VB6 以SOCK 的 UDP 方式去接收資料但出現一個令我困擾的問題,

.NET 目前創造一個SOCK物件來做傳送與接收方式,雙方連線傳輸都正常且沒有問題,

這時當我.NET對上VB時假如說雙方其中一個出現例外出狀況導致程式重啟,

VB6不管怎麼重啟她一定都能傳送資料也能得到.NET回傳訊息

相反的我對.NET做出重啟部分,這時候VB6傳送訊息時.NET卻無法接收資料部分但卻可以傳送訊息回去(接收部分會回傳接受成功訊息)

這時我把VB6給重新重啟再次讓VB6送出訊息時,.NET就能收到訊息了,

記得UDP是採用不須與對方建立連線及廣播方式送出嗎,從這樣看來好像是VB6出了點問題了.....

另外第二個問題奇怪是說,.NET 為什麼要傳送訊息我才能接收的到資料 ,沒有傳送我就沒辦法接收任何訊息不知道為什麼
附上以下小弟爛爛程式碼

Private ThreadReceive As System.Threading.Thread ' 接收端子執行續
Private mUdpClient As New UdpClient() ' 因為子執行續也要用,故以下丟出來給這個用
Private receiveBytes As [Byte]() ' 接收到的資料
Private chk_UDPSock_Data As Boolean ' 確認是否有檔案
Private RemoteIpEndPoint As IPEndPoint

Sub New()
'-------- 連線Server --------
RemoteIpEndPoint = New IPEndPoint(IPAddress.Any, Client.port)
mUdpClient.Connect(Server.IP, Server.port)
mUdpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 5000) ' 將設置 5秒 超時
WriteLOGFatal("[Client_udp]連線SERVER IP:" & Server.IP & " PORT :" & Server.port)
'-------- 子執行續接收資料 --------
ThreadReceive = New System.Threading.Thread(AddressOf ThreadDoReadSock_UDP)
ThreadReceive.Start()

ClientSentStr("@C1#") ' 不知道為什麼一定要有發送才會接收
End Sub



'' Sock 送出字串
Public Sub ClientSentStr(SentStr As String)
Try
WriteLOGDebug("[ServerSentStr] 送出字串[ " & SentStr & " ] 至 VMPIC! Start")
Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(SentStr)
mUdpClient.Send(sendBytes, sendBytes.Length)
WriteLOGDebug("[ServerSentStr] 已成功送出字串")
Catch ex As Exception
WriteLOGDebug("[ServerSentStr] Sock無法送出。")
WriteLOGDebug("[ServerSentStr] 錯誤訊息為:" & ex.Message)
End Try
End Sub



Private Sub ThreadDoReadSock_UDP()
Do
Try
mUdpClient.EnableBroadcast = True
receiveBytes = mUdpClient.Receive(RemoteIpEndPoint) ' 一個sock 雙向部分

' 判斷接收到的長度
If CInt(Me.receiveBytes.Length) > 0 Then
WriteLOGFatal("[udpClient]子執行續得到資料了")
chk_UDPSock_Data = True
End If
Catch ex As Exception
'ClientSentStr("@C2#")
If ReadXmlInfo("IsDoNext", "Setting.xml") = "0" Then ' 關閉執行續
Exit Do
End If
End Try
Loop
End Sub



搜尋相關Tags的文章: [ UDP ] ,
本篇文章發表於2018-01-22 19:46
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
作者回應

許一書
檢舉此回應
補充
目前VB6 UDP 程式對VB6 UDP 完全無任何問題......
現在問題就是VB6對上.NET UDP的問題了

本篇文章回覆於2018-01-22 19:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

許一書
檢舉此回應
補充
目前來說使用TCP部分.NET 對上VB6 完全是無任何問題
.NET對.NET UDP 不管重開起都無任何問題能正常接收
VB6 對 VB6 UDP 不管重開起都無任何問題能正常接收
但是VB6 對.NET 使用UDP卻有無接收資料的問題

希望各位大大能幫助我QQ
本篇文章回覆於2018-01-23 14:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.