zoukankan      html  css  js  c++  java
  • socket

    OSI七层网络架构

    OSI中的层  功能                    TCP/IP协议族

    应用层     文件传输,电子邮件,文件服务,虚拟终端;    TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet
    表示层     数据格式化,代码转换,数据加密; 没有协议
    会话层     解除或建立与别的接点的联系; 没有协议
    传输层     提供端对端的接口;             TCP,UDP
    网络层     为数据包选择路由;             IP,ICMP,RIP,OSPF,BGP,IGMP
    数据链路层   传输有地址的帧以及错误检测功能;      SLIP,CSLIP,PPP,ARP,RARP,MTU
    物理层     以二进制数据形式在物理媒体上传输数据;     ISO2110,IEEE802,IEEE802.2

    简单的理解

    物理层:HUB,网线   
    链路层:MAC,ARP,交换机   
    网络层:IP,ICMP,IGMP,路由器   
    传输层:TCP,UDP   
    会话层:HTTP,SMTP,FTP,POP3   
    表示层:SOAP,SSL   
    应用层:WebService的Method

    -------------------------------  
    Socket是对网络层操作  
    TcpClient是对传输层操作  
    ASP.NET是对会话层操作  
    -------------------------------
    TcpClient是Socket的基础上的封装,为了简化一部分Socket的功能。
    1、Socket支持TCP,UDP,IP包,Stream,Dgram等诸多类型
    2、TcpClient只支持TCP和Stream
    一般的应用,用TcpClient可以了,或者使用NetStream,如果要做点高级的事情,建议用Socket做。

    TcpClient 类(为 TCP 网络服务提供客户端连接)

    TcpClient 类提供了一些简单的方法,用于在同步阻止模式下通过网络来连接、发送和接收流数据。
    为使 TcpClient 连接并交换数据,使用 TCP ProtocolType 创建的 TcpListener 或 Socket 必须侦听是否有传入的连接请求。可以使用下面两种方法之一连接到该侦听器:
    创建一个 TcpClient,并调用三个可用的 Connect 方法之一。
    使用远程主机的主机名和端口号创建 TcpClient。此构造函数将自动尝试一个连接。

    Note注意

    如果要在同步阻止模式下发送无连接数据报,请使用 UdpClient 类。
    继承说明 要发送和接收数据,请使用 GetStream 方法来获取一个 NetworkStream。调用 NetworkStream 的 Write 和 Read 方法与远程主机之间发送和接收数据。使用 Close 方法释放与 TcpClient 关联的所有资源。

    1、C#中System.Net.Sockets里只有TcpClient类没有TcpServer类

    2、服务端是 TcpListener,确切的说应该叫侦听端或接收端,只不过习惯上侦听的一方常作 Server 而已

    socket.listen方法参数的理解:

    首先,强烈推荐一位cnblogs的博主——sunev。这是他的博客链接

    我看了国内外很多资料,都对c# socket编程不甚了解。但是,看了他的博客后,有醍醐灌顶之感。他的博文:基于c#的socket编程的TCP同步实现是我看过的最好的TCP socket入门文章。

    他首先讲了服务器端的代码。他的代码前面都好理解。但是到了socket.listen(10)这里,我有一个疑问,10代表什么?查阅MSDN,给出的说明是:max length of the pending client connections queue;也就是,悬挂的最大客户端连接数。我的理解是,在没有与客户端连接的时候,那么潜在的可以响应的最大客户端连接数是10。但是如果已经有一个连接了,那么潜在的最大客户端连接数还是10。为什么呢,因为一经响应连接,即socket.Accept()成功,那么就会生成新的socket与已连接的客户端通信。那么这个已连接的客户端就不会再占用原来的socket,相当于腾空了,因此,原socket响应连接的能力还是10。同理,已经连接了10个客户端,那么潜在的可响应的连接依然是10个。

    这是我对listen()方法中参数的理解,也不知道对不对。但是我认为是有道理。学习就是一个试错的过程。先把我理解po在这里吧。

     文章转载自:https://blog.csdn.net/CGGUANG/article/details/53140208

  • 相关阅读:
    形象理解ERP(转)
    禁用windows server 2008 域密码复杂性要求策略
    How to adding find,filter,remove filter on display method Form
    Windows Server 2008 R2激活工具
    How to using bat command running VS development SSRS report
    Creating Your First Mac AppGetting Started
    Creating Your First Mac AppAdding a Track Object 添加一个 Track 对象
    Creating Your First Mac AppImplementing Action Methods 实现动作方法
    Creating Your First Mac AppReviewing the Code 审查代码
    Creating Your First Mac AppConfiguring the window 设置窗口
  • 原文地址:https://www.cnblogs.com/yeshenmeng/p/9633978.html
Copyright © 2011-2022 走看看