问题描述
- vb编程 我使用的TCPListener和异步方法BeginAcceptTCPClient多个客户端 连接TCP服务器
-
Public Sub TCPlisten()try
Dim listener As New TcpListener(IPAddress.Any, Local_Port) listener.Start() listener.BeginAcceptTcpClient(New AsyncCallback(AddressOf AcceptClient), listener) '异步操作
Public Sub AcceptClient(result As IAsyncResult)
try
Dim tempListener As TcpListener = CType(result.AsyncState, TcpListener)Dim client As TcpClient = tempListener.EndAcceptTcpClient(result) Dim bytes(1024) As Byte Dim data As String = Nothing Dim stream As NetworkStream = client.GetStream() Dim i As Int32 i = stream.Read(bytes, 0, bytes.Length) listener.BeginAcceptTcpClient(AddressOf AcceptClient, listener) //应该加在while循环前面吧 While True //这里的循环怎么写可以替换成异步通信 data = System.Text.Encoding.ASCII.GetString(bytes, 0, i) '数字0表示从缓冲区的起始位置, receiveBytes = System.Text.Encoding.ASCII.GetBytes(data) '转换为字节数 Me.BeginInvoke(New System.EventHandler(AddressOf TCP_Refresh), receiveBytes) //异步委托 i = stream.Read(bytes, 0, bytes.Length) End While //这里有部分内容不懂,怎么处理网络流关闭??? Catch ex As Exception listener.Stop() listener = Nothing End Try End Sub Public Sub TCPserver(sender As Object, e As EventArgs) Try Dim str As String = Nothing str = System.Text.Encoding.ASCII.GetString(sender) TextBox1.Text = str & vbCrLf & TextBox1.Text Catch ex As Exception MsgBox(e.ToString()) End Try //这里的网络流关闭写在哪里啊??? 大家帮帮忙吧??? ‘ stream.Close() End Sub 现在问题是,只要客户端发送数据,服务器客户端可以接收数据,就是发送中间会出现没有反应??? 发现断开连接时候会出现服务器端不会响应,怎么办??? 特别是其中的异步TCP编程 看了这篇文章有了很大的认识 http://blog.csdn.net/jjjfox/article/details/8212271
解决方案
没人帮忙吗,自己顶一个
解决方案二:
这么多人浏览了,就没有说说问题。
解决方案三:
这不是VB6,是VB.NET
解决方案四:
是的vb.net ,赵4老师
解决方案五:
老师,vb编程中调用BeginAcceptTcpClient的异步操作出现,还有
我使用按钮触发关闭连接状态的,可是 listener.Stop() 不知道写到那个地方关闭侦听
解决方案六:
大家看了,可以说说有什么很严重的问题也是好事啊,谢谢
解决方案七:
大家好,这里问题是函数调用太多了吗
While True
data = System.Text.Encoding.ASCII.GetString(bytes, 0, i)
receiveBytes = System.Text.Encoding.ASCII.GetBytes(data)
TextBox1.Text = data //这里显示接受的数据,怎么没有看到??
' If InStr(1, Encoding.ASCII.GetString(receiveBytes), KeyWord) <> 0 Then
'Me.BeginInvoke(New System.EventHandler(AddressOf TCP_Refresh), receiveBytes)
' End If
'i = stream.Read(bytes, 0, bytes.Length)
End While
还是这个循环有问题
解决方案八:
这次的工作中碰到的问题,基本可以实现我想的要求,还有很大的改进,没有人给过我希望,难道是我没有把问题没说明白吗,还是对于这么简单的问题就不屑一顾。很是疑惑,对于我这样的新手
解决方案九:
请参考MSDN里面自带的相关VB.net例子代码。
解决方案十:
谢谢老师,这里有个疑问
提示:Stop 方法并不会关闭任何已接受的连接。并且你应该负责关闭这些连接,可是多个客户端的连接,怎么关闭每个连接呢???
时间: 2024-10-05 18:55:48