zoukankan      html  css  js  c++  java
  • .NET网络编程学习(二)

    System.Net.Sockets有很多类,其中最重要的就是Socket类.

    Socket类
    public class Socket : IDisposable
    Socket 类为网络通信提供了一套丰富的方法和属性。Socket 类允许您使用 ProtocolType 枚举中所列出的任何一种协议执行异步和同步数据
    传输。

    public Socket(AddressFamily addressFamily,SocketType socketType,ProtocolType protocolType);

    其中,addressFamily 参数指定Socket使用的寻址方案,比如AddressFamily.InterNetwork表明为IP版本4的地址;socketType参数指定 Socket的类型,比如SocketType.Stream表明连接是基于流套接字的,而SocketType.Dgram表示连接是基于数据报套接字的。protocolType参数指定Socket使用的协议,比如ProtocolType.Tcp表明连接协议是运用TCP协议的,而 Protocol.Udp则表明连接协议是运用UDP协议的。

    Socket 类对异步方法遵循 .NET Framework 命名模式。例如,同步的 Receive 方法对应于异步的 BeginReceive 和 EndReceive 方法。

    (1)如果当前使用的是面向连接的协议(如 TCP),则服务器可以使用 Listen 方法侦听连接。Accept 方法处理任何传入的连接请求,并返回可用于与远程主机进行数据通信的 Socket。可以使用此返回的 Socket 来调用 Send 或 Receive 方法。如果要指定本地 IP 地址和端口号,请在调用 Listen 方法之前先调用 Bind 方法。如果您希望基础服务提供程序为您分配可用端口,请使用端口号 0。如果希望连接到侦听主机,请调用 Connect 方法。若要进行数据通信,请调用 Send 或 Receive 方法。

    (2)如果当前使用的是无连接协议(如 UDP),则根本不需要侦听连接。调用 ReceiveFrom 方法可接受任何传入的数据报。使用 SendTo 方法可将数据报发送到远程主机。

    同步模式的Socket编程的基本过程如下:
    (1)创建一个Socket实例对象。
    (2)将上述实例对象连接到一个具体的终结点(EndPoint)。
    (3)连接完毕,就可以和服务器进行通讯:接收并发送信息。
    (4)通讯完毕,用ShutDown()方法来禁用Socket。
    (5)最后用Close()方法来关闭Socket。

    对于基于Tcp的Socket,涉及到服务器端的侦听(Listen)和客户端的连接(Connect)

    以下通过一个简单的Http服务器程序来看看服务器端的程序设计:

    (1)BaseConnection是个封装Socket表示一个连接的类.

    Code

    (2)Main方法

    Code
    (3)测试
    假设在你C:\Inetpub\wwwroot目录下有一个info.html

    启动服务器端:

    打开浏览器输入:http://localhost/info.html

     结果如下:

    同时服务器端输出:

    虽然很简单,但我们却的确写了一个http服务器程序.

    主要参考资料:MSDN

  • 相关阅读:
    Java程序员必知的8大排序(转载)
    Eclipse快捷键大全(转载)
    Java强引用、 软引用、 弱引用、虚引用(转)
    java数据类型二(转)
    为什么静态成员、静态方法中不能用this和super关键字(转)
    POJ 2002
    POJ 3126的教训
    POJ 3349
    POj 1105解题报告
    POJ 3278
  • 原文地址:https://www.cnblogs.com/hustcat/p/1265550.html
Copyright © 2011-2022 走看看