【VB.Net】最直白的TcpListener监听代码

【要点】

  1. 正确导入命名空间
  2. 使用线程处理业务
  3. 对异常进行控制,异常是难免的,注意捕捉并正确处理逻辑


【导入命名空间】

Imports System.Net
Imports System.Net.Sockets
Imports System.Threading


【初始化变量】

Private ListenerPort As Integer = 888 'TCP监听端口
Private StopFlag As Boolean = False '退出标志


【开始监听】

Dim tcpl As New TcpListener(IPAddress.Any, ListenerPort) '实例TcpListener并绑定到0.0.0.0:888,本例没有检查端口可用性
tcpl.Start()
Do Until StopFlag '循环直到StopFlag=True
	'===开始监听===
	Dim tcpclt As TcpClient = tcpl.AcceptTcpClient ''定义用于答复的TcpClient
	Dim t As New Thread(AddressOf NewConn) '为新TcpClient创建线程
	t.Start(Client) '启动线程
Loop


【处理连接】

Private Sub NewConn(Client as TcpClient)
	Senddata(Client,Text.Encoding.Utf8.GetBytes("Welcome!")) '发送欢迎信息
        Dim Buffer As Byte() = New Byte(4095) {} '定义接收缓冲
        Dim RecLength As Integer '定义接收长度
        Try
		Do Until StopFlag
			RecLength = Client.Client.Receive(Buffer)
			Select Case RecLength
				Case 0
					Exit Try '对端断开,跳出流程
				Case Else
					'正常处理逻辑
					Dim Packet as Byte()=new Byte(RecLength-1){}
					Array.Copy(Buffer,0,Packet,0,Packet.Length) '获取实际数据
					'......
					'对实际数据进行处理
					'按接收原样答复
					SendData(Client,Packet) '逻辑自己调整
			End Select
		Loop
	Catch ex As SocketException
		Select Case ex.NativeErrorCode
			Case 10053, 10054
				'远端断开
			Case Else
				'其他错误
		End Select
	End Try
	'会话结束
	Client.Client.Dispose()
End Sub


【发送答复】

Private Sub SendData(Client as TcpClient,Buffer as byte())  
	Client.Client.Send(buffer) '发送数据  
End Sub  
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值