。net3.5 Socket全事件封装类

。  基于.Net3.5编写,全异步操作。支持TCP、UDP两种方式,全事件模式通知。

Socket35.vb

 

' **********************************************************************
'
                适用于 .Net3.5版本
'
**********************************************************************


Imports  System.Net.Sockets
Imports  System.Net
Imports  System.Collections.Generic
Imports  System.Linq

Public   Class Socket35

自定义Socket结构体

Socket协义类型

    
Private SocketID As Int32
    
Private Server As Socket
    
Private ServerHas As New HashSet(Of MySocket)
    
Private MyReceiveBuff(), MySendBuff() As Byte
    
Public Delegate Sub EventHandler(ByRef Sender As MySocket, ByVal e As SocketAsyncEventArgs)

    
'-------------------------------------------------------------------------------------------------------------

    
Public Event OnAccept As EventHandler '客户端连接事件
    Public Event OnReceive As EventHandler '客户端传入数据事件
    Public Event OnDisconnected As EventHandler  '客户端断开事件
    Public Event OnSent As EventHandler  '数据发送完毕


    
'**********************************************************************
    '      Socket对象定义、接收数据、发送数据、外部事件引发
    '**********************************************************************

构造函数

连接服务器

接收缓冲区大小

发送缓冲区大小

绑定地址和端口

侦听数

开始侦听

客户端连接

客户端传入数据(TCP)

客户端传入数据(UDP)

发送数据

得到ServerHas数据信息

清除Socket对象

    
'**********************************************************************
    '                LinQ 查询 MySocket结构体
    '**********************************************************************

得到MySocket对象

释放对象

End Class




 

调用示例:

TCP:

 

Dim  Server  As  Socket35
Server 
=   New  Socket35(Socket35.SocketType.TCP,  1024 1024 )
Server.Bind(
New  IPEndPoint(IPAddress.Any,  5614 ))
Server.Listen(
100 )

' Socket事件
AddHandler  server.OnAccept,  AddressOf  accept
AddHandler  server.OnReceive,  AddressOf  received
AddHandler  server.OnSent,  AddressOf  sent
AddHandler  server.OnDisconnected,  AddressOf  disconnect

' 开始监听
Server.Start()

' Socket连接进入
Private   Sub accept(ByRef Sender As Socket35.MySocket, ByVal e As SocketAsyncEventArgs)
    
    Sender.WorkName 
= Now.ToString
    Debug.Write(Sender.WorkID)

End Sub



' Socket接收入数
Private   Sub received(ByRef Sender As Socket35.MySocket, ByVal e As SocketAsyncEventArgs)

    
Dim Content As String
    
Dim SendBuff() As Byte

    Content 
= System.Text.Encoding.GetEncoding("gb2312").GetString(e.Buffer)
    server.Send(Sender.WorkSocket, SendBuff)

End Sub


' 查看当前Socket活动连接信息(二维数组)
Dim  SocketList(,)  As   String
SocketList 
=  Socket35.GetServerList()

 

UDP:

 

Dim  Server  As  Socket35
Server 
=   New  Socket35(Socket35.SocketType.UDP,  1024 1024 )
Server.Bind(
New  IPEndPoint(IPAddress.Any,  5614 ))

AddHandler  server.OnAccept,  AddressOf  accept
AddHandler  server.OnReceive,  AddressOf  received
AddHandler  server.OnSent,  AddressOf  sent
AddHandler  server.OnDisconnected,  AddressOf  disconnect
Server.Start()

' 接收UDP传来的数据
Private   Sub received(ByRef Sender As Socket35.MySocket, ByVal e As SocketAsyncEventArgs)

    
Dim Content As String
    
Dim SendBuff() As Byte

    Content 
= System.Text.Encoding.GetEncoding("gb2312").GetString(e.Buffer)

    Server.Send(Sender.WorkSocket, SendBuff)

End Sub
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值