zoukankan      html  css  js  c++  java
  • socket网络编程

    ---------------------- ASP.Net+Android+IO开发S.Net培训、期待与您交流! ----------------------

    Socket网络编程

    Socket的英文原义是“孔”或“插座”,作为进程通信机制,取后一种意思。通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。(其实就是两个程序通信用的。)

    在interner上有很多这样的主机,这些主机一般运行了多个服务软件,同时提供了几种服务。每种服务都打开一个socket,并绑定到一个端口上,不同的端口对应与不同的服务(应用程序)。

    例如:http使用80端口,ftp使用21端口,smtp使用23端口

    有两种类型:

    流式socket(STREAM):是一种面向链接的socket,针对于面向链接的tcp服务应用,安全,但是效率低。

    数据报式socket(DATAGRAM):

    是一种无连接的socket,对应与无连接的UDP服务应用,不安全(丢失,顺序混乱,在接收端要分析重排及要求重发),但效率高。

    Socket一般应用模式(服务器端和客户端)

    1. 服务器端welcoming socket开始监听端口(负责监听客户端连接信息)
    2. 客户端client socket连接服务端指定端口(负责接收和发送服务端消息)
    3. 服务端welcoming socket监听到客户端连接,创建connection socket(负责和客户端通信)

    服务器端的socket(至少需要两个)

    一个负责接收客户端连接请求(但不负责与客户端通信)

    每个成功接收到一个客户端的连接便在服务器端产生一个对应的socket

    (在接收到客户端连接时创建

    为每个连接成功地客户端创建一个对应的socket

    客户端的socket

    必须指定要连接的服务器端地址和端口

    通过创建一个socket对象来初始化一个到服务器端的tcp连接

     

    Socket的通讯过程

    服务器端:

    1申请一个socket

    2绑定到一个IP地址和一个端口上

    3开启侦听,等待接受连接

    客户端:

    1申请一个socket

    2连接服务器(指明IP地址和端口号)

    服务器端连接请求后,产生一个新的socket(端口大于1024)与客户端建立并进行通信,原侦听socket继续侦听。

    Socket的构造函数

    连接通过构造函数完成

    Public Socket(AddressFamily addressFamliy,SocketType socketType,ProtocolType protocolType)

    AddressFamiliy成员指定Socket用来解析地址的寻址方案,例如:interNetWork指示当Socket使用一个IP版本4地址链接。

    socketType定义要打开的socket的类型

    Socket类型使用Protocol枚举问Windows Sockets API通知所请求的协议

    如SocketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

    相关类:

    IPAddress类:包含了一个IP地址

    IPEndPoint类:包含了一个对IP地址和端口号

    方法们:

    Socket():创建一个Socket

    Bind():绑定一个本地IP和端口号(IpEndPoint)

    Listen():让Socket侦听传入的连接尝试,并指定侦听队列容量

    Connect():初始化与一个Socket的连接

    Accept():接收连接并返回一个新的socket

    Send():输入数据到Socket

    Receive():从Socket中读取数据

    Close():关闭Socket(销毁连接)

    ---------------------- ASP.Net+Android+IO开发S.Net培训、期待与您交流! ----------------------

  • 相关阅读:
    共创力董事长杨学明先生受邀参加CED智慧大会!
    杨学明老师为华宇金信(北京)软件有限公司提供为期两天的内训服务!
    《互联网敏捷测试管理实践》课程大纲 2018.12.15~16 (上海)
    共创力咨询杨学明老师为国电南瑞提供两天的内训服务!
    《软件测试管理》深圳公开课预告 2018.11.23~24 中南海滨大酒店
    软件测试管理的十大挑战
    对于开发人员修改代码引发新问题的处理措施
    热烈庆祝杨学明老师为上海某著名金融互联网公司提供两天的内训服务!
    《高效的互联网研发项目管理》课程大纲
    《软件测试管理》北京公开课预告 2018.9.28~29
  • 原文地址:https://www.cnblogs.com/qwsdxz/p/3171560.html
Copyright © 2011-2022 走看看