| 发表于:2007-06-07 15:24:05 楼主 |
服务器与客户端的通信(socket) 不知道为什么,我在用线程接受信息的时候,总是不稳定 例如服务器发了5条信息, 我接受的时候,只接受了2条,第一条正确,第二条包含了剩下4条的信息 服务器发送: 1 2 3 4 5 客户端接收 1 2345 有时候接受正确,大多情况下接收不正确 我的服务器是用for语句循环发送的,结果就像上面举得例子 如果用timer发送(5ms),服务器接收就是正常的! 这是我客户端的接收代码 '客户端socket dim clisocket as socket '连接状态 dim isconnected as boolean = false '接收信息线程 dim mythread as thread private sub form1_load(byval sender as system.object, byval e as system.eventargs) handles mybase.load dim remoteep as new ipendpoint(net.ipaddress.parse( "192.168.123.7 "), 9999) clisocket = new socket(addressfamily.internetwork, sockettype.stream, protocoltype.tcp) try clisocket.connect(remoteep) listbox1.items.add( "连接服务端成功! ") isconnected = true mythread = new thread(addressof recivemsg) mythread.start() catch ex as exception listbox1.items.add(ex.message) end try end sub sub recivemsg() dim bytes() as byte = new byte(1024) {} dim data as string = string.empty dim tokens() as string while true dim bytesrec as integer = clisocket.receive(bytes) data = encoding.utf8.getstring(bytes, 0, bytesrec) begininvoke(new eventhandler(addressof addinfo), data) 'invoke保证线程安全 end while end sub '非ui线程调用窗体控件,保证线程安全。与聊天实现无关。 sub addinfo(byval sender as system.object, byval e as system.eventargs) listbox1.items.add( "远程信息: " + sender.tostring) end sub |
|
|
|
|