作者hawfu (阿呆)
看板Visual_Basic
标题[.NET] 关於socket server question
时间Fri Apr 27 20:56:57 2012
请输入专案类型(网站专案或者应用程式专案):应用程式专案
不好意思,想请教大家关於socket server question
编辑器:vb.net 2010 express
问题 :程式在loop时(while),结果会显示不出来(画面当机),但如果拿掉loop(while)就没问题
程式码如下:
Public Sub Server_data()
Dim server As Socket = Nothing
server = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
Dim localEndPoint As New IPEndPoint(IPAddress.Parse("172.21.104.147"), 2112)
server.Bind(localEndPoint)
server.Listen(10)
While (True)
Dim success As Boolean
Dim recvbytes(1024) As Byte
Dim acceptsocket As Socket = server.Accept()
success = acceptsocket.Receive(recvbytes)
If (success <> True) Then
TextBox1.Text &= "accept socket is fail" & vbNewLine
Else
TextBox1.Text &= "accept socket is success" & vbNewLine
End If
ListBox1.Items.Insert(0, Encoding.UTF8.GetString(recvbytes))
End While
server.Close()
End Sub
只要将 while 与 end while拿掉,程式就可以正常传送(不过只能传一次)
我是打算改成loop,可是画面会当机然後不动
板上如果有人知道,可否告知一下,谢谢!!!
PS:
想请教板上各位大大,不知是有否有推荐书单可以看
主要我的vb.net大多是用在 网路程式、资料库、与PLC 这三方面
谢谢!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.164.46.93
1F:推 Marty:写Socket的程式得开一个新thread来执行 才不会画面像当掉 04/27 21:29
2F:→ Marty:在操作UI的时候要用Delegate 才不会失败 04/27 21:30
3F:→ Marty:另外中文Socket的书也不多 就一两本 内容普普 入门而已... 04/27 21:33
4F:推 fumizuki:没看到回圈终止条件? 04/27 22:19
5F:→ hawfu:感谢大家回应,我会再找资料试看看,有问题会再请教大家 04/29 23:52
6F:→ Abbee:你的问题在於多执行绪和ui的互动,与socket无关 04/30 12:11
7F:→ s3748679:不是有一系列的BeginXXXX, EndXXXX可以用吗~ 05/01 18:48
8F:→ s3748679:然後配合Control.Invoke应该就行啦@@" 05/01 18:48