以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请问一下关于tcp  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=160791)

--  作者:tcmhl
--  发布时间:2021/2/22 9:15:00
--  请问一下关于tcp
学习中,请问一下,下面代码为啥每次连接只能收到第一次发送的数据并新增行




Public iPort As Integer = 10086
Public thThreadRead As System.Threading.Thread
Public tlTcpListen As System.Net.Sockets.TcpListener 
Public blistener As Boolean = True 
Public nsStream As System.Net.Sockets.NetworkStream 
\'\'\'\'创建接收的基本数据流 
Public srRead As System.IO.StreamReader 
\'\'\'\'从网络基础数据流中读取数据 
Public tcClient As System.Net.Sockets.TcpClient 

Public Sub Listen()
Try 
 tlTcpListen = New System.Net.Sockets.TcpListener (iPort)
 \'\'\'\'以8000端口号来初始化TcpListener实例 
 tlTcpListen.Start() 
 \'\'\'\'开始监听 
 \'StatusBar1.Text = "正在监听..." 
 tcClient = tlTcpListen.AcceptTcpClient()
 \'\'\'\'通过TCP连接请求 
 nsStream = tcClient.GetStream ( )  
 \'\'\'\'获取用以发送?接收数据的网络基础数据流 
 srRead = New System.IO.StreamReader (nsStream)  
 \'\'\'\'以得到的网络基础数据流来初始化StreamReader实例 
 \'\'\'\'StatusBar1.Text = "已经建立TCP连接!" 
 \'\'\'\'循环侦听 
 While blistener 
  Dim sMessage As String = srRead.ReadLine ( )  
  \'\'\'\'从网络基础数据流中读取一行数据 
  If ( sMessage = "STOP" ) Then 
   tlTcpListen.Stop ( )  
   \'\'\'\'关闭侦听 
   nsStream.Close ( )  
   srRead.Close ( )  
   \'\'\'\'释放资源 
    \'\'\'\'StatusBar1.Text = "无连接!" 
   thThreadRead.Abort ( )  
   \'\'\'\'中止线程 
   Return 
  Else 
   \'\'\'\'判断是否为断开TCP连接控制码 
 Dim sTime As String = DateTime.Now.ToShortTimeString ( )  
   \'\'\'\'获取接收数据时的时间 
   \'\'\'\' ListBox1.Items.Add ( sTime + " " + sMessage )  
  End If 
  MessageBox.Show(sMessage) 
 End While 
Catch ex As System.Security.SecurityException 
 MessageBox.Show ( "侦听失败!" , "错误" )  
End Try 
End Sub

--  作者:有点蓝
--  发布时间:2021/2/22 9:26:00
--  
去做个可以测试的项目实例发上来测试
--  作者:tcmhl
--  发布时间:2021/2/22 9:27:00
--  
感谢!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.rar



[此贴子已经被作者于2021/2/22 9:27:29编辑过]

--  作者:有点蓝
--  发布时间:2021/2/22 9:40:00
--  
AcceptTcpClient方法要放到循环里面,参考:https://blog.csdn.net/nuistchn/article/details/50809158

或者看看这个例子:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=28230&skin=0