以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]TCPsocket网络通信程序关停还驻留内存?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=193290)

--  作者:浙江仔
--  发布时间:2024/9/2 9:06:00
--  [求助]TCPsocket网络通信程序关停还驻留内存?
https://blog.csdn.net/action20/article/details/17120463


按照这个帖子,把代码装进全局代码里了
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:tcp异步通信代码.txt



窗口启动监听:
myTCPs = New TCPServer(9000, 100, 100, 5)

If myTCPs.IsServerStart = False Then
    myTCPs.StartServer()
End If

但是不知道怎么把接收到的数据按照自己的需要进行处理了,帮忙指点指点!


[此贴子已经被作者于2024/9/3 9:07:22编辑过]

--  作者:有点蓝
--  发布时间:2024/9/2 9:21:00
--  
#Region "事件"节里提供了几个事件,其中一个是DataArrived(接收到客户端的数据),定义一个事件接收数据并处理

全局代码最后增加一个函数

public sub xx接收数据的函数(ByVal value As Byte(), ByVal Len As Integer, ByVal IPAddress As String, ByVal Port As String)
\'在这里对接收到的数据进行处理,value参数就是接收的数据的字节数组
end sub

窗口启动监听改为:
myTCPs = New TCPServer(9000, 100, 100, 5)
AddHandler myTCPs.DataArrived, AddressOf xx接收数据的函数
If myTCPs.IsServerStart = False Then
    myTCPs.StartServer()
End If


--  作者:浙江仔
--  发布时间:2024/9/2 10:01:00
--  
非常感谢!
--  作者:浙江仔
--  发布时间:2024/9/3 9:07:00
--  
再请有点蓝帮忙看看
按照2楼的方法,已启动监听,但是使用myTCPs.close无法关闭socket通信进程,即使关闭狐表发布的程序,任务管理器还能看到狐表进程,端口始终占用,客户端还能继续连接,但是无法处理接收到数据。该怎么完全关闭通信进程呢?
[此贴子已经被作者于2024/9/3 9:07:13编辑过]

--  作者:有点蓝
--  发布时间:2024/9/3 9:14:00
--  
有个CloseAllClient函数,close关闭前试试调用这个函数断开所有客户端
--  作者:浙江仔
--  发布时间:2024/9/3 9:20:00
--  
也试过,也结束不了进程,好奇怪
--  作者:有点蓝
--  发布时间:2024/9/3 9:23:00
--  
那只能咨询写这段代码的人了
--  作者:浙江仔
--  发布时间:2024/9/5 19:45:00
--  
后来在Public Sub Close()那里,加了_LocationListenSocket.shutdown后,貌似解决