сам написал но ест проблема знающие люди прошу помочь
- Код: Выделить всё
Imports System
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Imports System.Threading
Module Module1
Dim z As New ThreadStart(AddressOf receive_server)
Dim z1 As New Thread(z)
Dim c As New ThreadStart(AddressOf receive_Client)
Dim c1 As New Thread(c)
'Client
Dim s As New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
Dim broadcast As IPAddress = IPAddress.Parse("217.11.160.16")
Dim ep As New IPEndPoint(broadcast, 27015)
'Server
Private Const listenPort As Integer = 27015
Dim listener As New UdpClient(listenPort)
Dim serip As IPAddress = IPAddress.Parse("192.168.1.10")
Dim groupEP As New IPEndPoint(serip, listenPort)
Public Function Send_client(ByVal sendbuf() As Byte) As Integer
s.SendTo(sendbuf, ep)
End Function
Sub receive_Client()
Try
Do While True
If s.Connected Then
Dim sendbuf(255) As Byte
s.Receive(sendbuf)
send_server(sendbuf)
Else
s.Connect(ep)
End If
Loop
Catch ex As Exception
Console.WriteLine("ошибка Client > > > " & ex.ToString)
c1.Abort()
z1.Abort()
End Try
End Sub
Sub receive_server()
Try
Do While True
Dim bytes As Byte() = listener.Receive(groupEP)
Send_client(bytes)
Loop
Catch e As Exception
Console.WriteLine("ошибка Server > > > " & e.ToString())
c1.Abort()
z1.Abort()
Finally
listener.Close()
End Try
End Sub
Sub send_server(ByVal sendbuf() As Byte)
listener.Send(sendbuf, sendbuf.Length, groupEP)
End Sub
Sub Main()
Console.WriteLine("server zapushen")
z1.Start()
Console.WriteLine("client zapushen")
c1.Start()
End Sub
End Module
ошибку выдает такой
ошибка Client > > > System.Net.Sockets.SocketException: Сообщение, отправленное
на сокет датаграмм, было больше, чем буфер внутренних сообщений или был превышен
иной сетевой параметр. Также возможно, что буфер для принятия сообщения был мен
ьше, чем размер сообщения
в System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size,
SocketFlags socketFlags)
в System.Net.Sockets.Socket.Receive(Byte[] buffer)
в udp_mintext.Module1.receive_Client() в D:\Documents and Settings\admin\Loca
l Settings\Application Data\Temporary Projects\udp_mintext\Module1.vb:строка 29
проблема тут
- Код: Выделить всё
Dim sendbuf(255) As Byte
s.Receive(sendbuf)
массив sendbuf больше чем надо .вот и вопрос что делать ? .как заранее узнать какой размер пакета пришло ?
заранее всех благодарю