PDA

View Full Version : نمونه برنامه UDP برای Socket Programming



goldpower
جمعه 20 مرداد 1391, 22:57 عصر
از دوستان کی می تونه از روی کدهای زیر یه نمونه برنامه ( UDP ( server & client بنویسه ؟؟؟


#Region "Imports"
Imports System
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Imports System.Threading
#End Region


Public Class xSock

#Region "Declares"
Private mState As Integer
Private tcpServer As TcpListener
Private tcpsClient As New TcpClient()
Private UDP_Client As New UdpClient()
#End Region

#Region "Events"
'Public Event Close()
Public Event ClosedByRemote()
Public Event Connected()
Public Event DataArrival(ByVal Data As String)
Public Event Sock_Error(ByVal Description As String)
'Public Event SendComplete()
'Public Event SendProgress()
#End Region

#Region "Enums"

Public Enum Status
Disconnected = 0
Listening = 1
Connected = 3
Connecting = 2
End Enum

#End Region

#Region "Properties"

Public ReadOnly Property State() As Status
Get
State = mState
End Get
End Property

#End Region


' Methods '


#Region "UDP"

Public Sub UDP_Send(ByVal Host As String, ByVal Port As Integer, ByVal Data As String)
Try
' Select remote host and port
UDP_Client.Connect(Host, Port)

' Send data
Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(Data)
UDP_Client.Send(sendBytes, sendBytes.Length)

GetUDPData(UDP_Client)

Catch e As Exception
RaiseEvent Sock_Error(e.ToString)
End Try

End Sub

Public Sub UDP_Listen(ByVal Port As Integer)
Try
' Open Port
Dim UDP_Server As UdpClient
UDP_Server = New UdpClient(Port)

GetUDPData(UDP_Server)

Catch e As Exception
RaiseEvent Sock_Error(e.ToString)
End Try

End Sub

Private Sub GetUDPData(ByVal UDP_Server As UdpClient)
Try
' recieving data
Dim RemoteIpEndPoint As New IPEndPoint(IPAddress.Any, 0)
Dim RData = Encoding.ASCII.GetString(UDP_Server.Receive(Remote IpEndPoint))
RaiseEvent DataArrival(RData)

GetUDPData(UDP_Server)

Catch e As Exception
RaiseEvent Sock_Error(e.ToString)
GetUDPData(UDP_Server)
End Try
End Sub

#End Region


End Class

Veteran
شنبه 21 مرداد 1391, 00:27 صبح
والا من خیلی دنبال ی نرم افزار client server بودم و هستم.اما متاسفانه توی شبکه محلی کار میکنن ! توی Wan کار نمیکنن

M.KH-SH
شنبه 21 مرداد 1391, 00:40 صبح
دوست عزیز چرا udp?
از پرتوکل tcp استفاده کن در همه جا کار میکنه و مشکلی نداره

اگه دوستان تمایل داشته باشن و درخواست هاشون رو در همین پست اعلام کنن یک آموزش کامل سوکت نویسی از پرتوکل tcp همراه با اتصال به بانک بدون sql server رو می نویسم و قرار میدم که انشاالله دیگه کسی در این مورد بحثی نداشته باشه

rahime
دوشنبه 23 مرداد 1391, 07:50 صبح
دوست عزیز چرا udp?
از پرتوکل tcp استفاده کن در همه جا کار میکنه و مشکلی نداره

اگه دوستان تمایل داشته باشن و درخواست هاشون رو در همین پست اعلام کنن یک آموزش کامل سوکت نویسی از پرتوکل tcp همراه با اتصال به بانک بدون sql server رو می نویسم و قرار میدم که انشاالله دیگه کسی در این مورد بحثی نداشته باشه


سلام من واقعا با سوکت نویسی مشکل دارم.اگه آموزش بدید خیلی ممنون میشم

crazyfull
چهارشنبه 25 مرداد 1391, 06:23 صبح
چند تا مشکل داره اين برنامه
اول اينکه تو برنامه کلاينت نياز نيست به پورتی گوش بدی پس اون کد ها رو از تو Form_Load پاک کن, البته اگه کلاينت و سرور آيپی وليد داشته باشند مشکلی پيش نمياد
دوم اينکه چون تو کلاس سوکت از تريد استفاده شده همينطوری نميتونی ديتاهای گرفته شده رو بريزی تو تکس باکس بايد از invoke استفاده کنی يا اينکه اين دستور رو CheckForIllegalCrossThreadCalls = False تو Form_Load هر دو برنامه بذاری
خود کلاس هم خالی از اشکال نيست خطا هایی وجود داره که بايد مديريت بشه