科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件VB.NET实现PC与掌上电脑PPC的双向通信

VB.NET实现PC与掌上电脑PPC的双向通信

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文介绍如何利用VB.Net 通过Windows Sockets (Winsock)以及多线程编程进行桌面电脑与Pocket PC间的双向通信

作者:窦瑞欣 来源:天极开发 2007年11月9日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
将计时器触发事件的频率Interval(以毫秒为单位)适当调节可以改变服务程序响应连接请求的快慢。

  计时器不断循环,一旦发现有连接的请求就会创建一个线程专门来处理这个连接,创建线程时需要传递处理连接的过程或函数的地址以被线程调用。

  服务程序通过已连接的Socket获取数据,接收到的数据按相应的编码规则进行解码并将信息添加到列表框中:

……

CurThread = System.Threading.Thread.CurrentThread()

‘接受挂起的连接请求并返回可用来发送和接收数据的Socket

CurSocket = Listener.AcceptSocket

While Listening
 If CurSocket.Available > 0 Then
  ‘接收来自绑定的Socket的数据
  Bytes = CurSocket.Receive(Buffer, Buffer.Length, 0)
  ‘将接收到的数据转化成相应编码的字符串
  ReceivedData= Encoding.UTF8.GetString(Buffer)
  SyncLock CurThread
  lbReceived.Items.Add(ReceivedData)
End SyncLock
……

  TCPListener.AcceptSocket接受挂起的连接请求,并且返回用于发送和接收数据的 Socket,此 Socket 继续用于和新连接上的客户端通信。

  SyncLock 语句确保多个线程不会同时执行向列表框添加数据的操作。当线程到达 SyncLock 块时,将计算表达式并保持此互斥性,直到在表达式返回的对象上有锁为止。这防止了表达式在多个线程运行期间更改值,从而避免代码产生意外的结果。

  向客户端返回服务端处理后的消息,代码片段如下:

'格式化返回消息 - 这是服务器端处理后的结果并返回到客户端。

BacktoClientData = System.DateTime.Now ‘向客户端传递服务端程序处理时的时间
Buffer = Encoding.UTF8.GetBytes(BacktoClientData.ToCharArray)

'通过打开的套接字将结果发送回客户端应用程序,然后关闭该套接字。

CurSocket.Send(Buffer, Buffer.Length, 0)
CurSocket.Close()

  编译桌面服务端程序运行效果如下图所示:


  当服务程序处理完一个连接后就向相应的PPC客户端返回一条成功信息,如下图所示:


  至此,PPC客户端程序和桌面服务端程序编写完毕,该系统在安装WindowsXP SP2的桌面电脑和Dell X3i 的PPC上测试通过。

  四、结论

  本程序简单介绍了PC与PPC之间Socket通信方法,在实际应用中还有很多细节要做,并且还有可以拓展的地方。该模型为实现PC与PPC间复杂的信息交互,创建复杂的无线信息系统提供了一定技术基础。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章