请教程序如何同时处理多个TCP连接

zhoubapi3 2016-01-03 07:47:19
各位老大,小弟初学VB,请多赐教:
环境:visual studio 2015, Visual Basic
参考程序:https://msdn.microsoft.com/zh-cn/library/system.net.sockets.tcplistener.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2
改造:把原来程序里边的try catch去掉了,程序由一个按钮控制启动
运行情况:程序基本成功,能够正确接受来自client端的请求并做出相应
问题:程序进入while语句后,其他什么事情都做不了,一门心思地在等待客户端的请求;甚至于我在程序界面做了一个退出按钮想退出程序也不行。
希望:程序在监听客户端请求的时候,也可以允许我做一些其它事情,必须在界面上做一些其它输入操作,允许我按界面上的按钮。

非常感谢各位大侠!

主程序如下:
      Dim server As TcpListener
server = Nothing

' Set the TcpListener on port 13000.
Dim port As Int32 = 13000
Dim localAddr As IPAddress = IPAddress.Parse("127.0.0.1")
server = New TcpListener(localAddr, port)

' Start listening for client requests.
server.Start()

' Buffer for reading data
Dim bytes(1024) As Byte
Dim data As String = Nothing
While True
' Enter the listening loop.
MsgBox("Waiting for a connection...")
' Perform a blocking call to accept requests.
' You could also user server.AcceptSocket() here.
Dim client As TcpClient = server.AcceptTcpClient()
MsgBox("Connected!")
data = Nothing

' Get a stream object for reading and writing
Dim stream As NetworkStream = client.GetStream()
Dim i As Int32

' Loop to receive all the data sent by the client.
i = stream.Read(bytes, 0, bytes.Length)
While (i <> 0)
' Translate data bytes to a ASCII string.
data = System.Text.Encoding.ASCII.GetString(bytes, 0, i)
MsgBox("Received: " & data)
' Process the data sent by the client.
data = data.ToUpper()
Dim msg As Byte() = System.Text.Encoding.ASCII.GetBytes(data)

' Send back a response.
stream.Write(msg, 0, msg.Length)
MsgBox("Sent: " & data)

i = stream.Read(bytes, 0, bytes.Length)

End While

' Shutdown and end connection
client.Close()


End While
...全文
458 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
一笑拔剑 2016-01-07
  • 打赏
  • 举报
回复
vb.net么? 用多线程吧. 把监听while放sub里
一笑拔剑 2016-01-07
  • 打赏
  • 举报
回复
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim t1 As Threading.Thread
        Dim t2 As Threading.Thread
        t1 = New Threading.Thread(AddressOf 你的sub)
        t2 = New Threading.Thread(AddressOf 你的sub)
        t1.Start()
        t2.Start()
    End Sub
赵4老师 2016-01-05
  • 打赏
  • 举报
回复
为什么不用WinScok控件呢?
电脑城实习报告五篇 电脑城实习报告 篇1   初踏社会,心情激动、紧张。激动的是我终于可以长大了,可以开始我真正的人生;紧张的是不知自己是否能适应这个社会,战胜这新环境。   我最先到我哥所在的公司做了一个多月,刚进来公司的时候老板就和我聊了很多,问我网络方面会不会,组装和维护计算机有过吗?我当时真是出了一把冷汗,不过还好平日在学校都有这方面的动手,自己的电脑被我也折腾过一段时间,还是游刃有余的回答了经理的问题。记得实习开始的那一天,我是在无聊中度过的,整日无所事事,几乎在办公桌前坐了一天,空闲得让我要打瞌睡了,真希望可以有人叫我帮忙做点事情啊!过了几天后,才开始做事,可是每天就是单纯的组装和维护计算机,我当然全力以赴,尽心尽力做到最好。现在想想其实这就是我的工作。   后来回武汉在电脑城做了一段时间,觉得没有学到什么东西,于是便回家开了一个电脑维修店,这时,有个哥们要搞个网吧,叫我帮忙,当时想没关系的,我有信心,怎么说也跟计算机相关,不懂就多动手多请教应该很快领悟过来的!劳动节第一天我就开始动手实干了。布线、接水晶头、装机、搞网络和调试;其实除了我,还有一个比较有经验的师傅一起做的,

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧