zoukankan      html  css  js  c++  java
  • windows phone开发学习4:Socket编程总结

    Socket编程:套接字,用于描述IP地址和端口 。用IP地址和端口号唯一确定

    端口TCP  UDP是相互独立的,例如在TCP协议下有200号端口,在UDP协议下也可以有200号端口,且是相互独立的)

    Socket之间的连接过程分为3个步骤:

    1.服务器监听

    2.客户端请求

    3.连接确认

    Windows phone应用程序Socket通信的过程包括7个步骤

    1.创建一个客户端和服务器端的Socket连接

    2.客户端发送消息,服务器端接受消息

    3.客户端接受消息,服务器端发送消息

    4.连接不断,重复23步骤

    5.关闭发送接收通道,可以只关闭发送或接受通道,也可以同时关闭

    6.关闭socket连接

    7.整个通信过程到此终止

    执行异步Socket操作的模式包含以下步骤:

    1.分配一个新的SocketAsyncEventArgs对象,或者从应用程序池中获取一个这样的空闲对象

    2.针对SocketAsyncEventArgs对象设置即将执行的操作所需要的属性:例如附加到Completed事件的事件处理程序以及ConnectAsync方法的RemoteEndPoint属性

    3.调用适当的Socket方法以启动异步操作

    4.如果异步Socket方法返回true,则说明I/O操作处于挂起状态。操作完成时,将引发传递给Socket方法的SocketAsyncEventArgs对象的SocketAsyncEventArgs.Completed事件。

    5.如果返回的是false,说明操作时同步完成的。可以查询SocketAsyncEventArgs属性来获取完成状态和Socket操作结果

    6.SocketAsyncEventArgs重用于另一个操作,将它放回到应用程序池中,或者将它丢弃。

    客户端一般步骤:

    完成事件方法:

    首先检查连接是否失败,失败处理

    连接成功操作:

    检测sock的上一个操作:然后确定其操作

    如果上一个操作是连接:下一个操作就应该是发送数据

    如果上一个操作是发送:显示发送成功的数据,下一个操作是接受数据

    如果上一个操作是接收:显示接受到的数据,然后清理资源

     

  • 相关阅读:
    nginx使用https协议
    DUBBO入门
    Zookeeper学习笔记4
    maven dependency:tree中反斜杠的含义
    CATALINA_BASE与CATALINA_HOME的区别
    log4j打印抛出异常时堆栈内容
    如何获取e.printStackTrace()的内容
    springboot+RabbitMQ 问题 RabbitListener 动态队列名称:Attribute value must be constant
    详细介绍Spring Boot + RabbitMQ实现延迟队列
    springboot集成rabbitmq(实战)
  • 原文地址:https://www.cnblogs.com/liutianwen/p/3014616.html
Copyright © 2011-2022 走看看