我有一个运行在Windows桌面上的服务器软件,并以.net开发,它始终通过TCP/IP监听套接字上的传入连接。检查套接字是否连接在一个紧凑的框架中
然后我有CE 6.0上运行的客户端软件与Compact Framework的3.5开发...这个客户需要:
- 连接到服务时启用
- 发送数据的几个字节的每一个服务器300毫秒
- 决不在发送挂起或丢失时,每次连接
- 检查套接字连接
到目前为止,我实现了服务器端基于此样本的异步代码,但修改,以保持连接的生命,直到服务器关闭它们......不仅为一杆,它的工作完美
http://msdn.microsoft.com/en-us/library/fx6588te.aspx
然后我实现客户端这样:
dim clientSocket as new System.Net.Sockets.TcpClient()
/... code .../
'Activate the service
clientSocket.Connect("10.0.0.34", myPort)
/.... code ..../
'Data send function
dim serverStream as NetworkStream = clientSocket.GetStream()
dim outStream as byte() = System.Text.Enconding.ASCII.GetBytes("My messagge...")
serverStream.Write(outStream, 0, outStream.Length)
serverStream.Flush
这也是完美的工作。我需要什么?
- 要检测与插座的连接开放之前发送数据...这将避免在一些情况下,时间上的损失了问题
我在网上搜索中,但我不能这样做的方式在CF中执行...而.connected方法在此处不可用。
最好的 - 但它似乎对我来说很愚蠢 - 我发现的方式是当连接/发送成功时设置一个标志,并在发生错误时重置它。
仅供参考,NetworkStream不会缓存写入,因此Flush不会为您执行任何操作。详情请看这里:http://msdn.microsoft.com/en-us/library/system.net.sockets.networkstream.flush(v=vs.90).aspx – tcarvin