• c# ,socket编程的一些常用方法


    1 命名空间

      需要添加的命名空间

    using System.Net;
    using System.Net.Socket;

    2 构造新的socket对象

    socket原型:

    public socket (AddressFamily addressFamily,SocketType sockettype,ProtocolType protocolType)

    (1) AddressFamily 用来指定socket解析地址的寻址方案,Inte.Network标示需要ip版本4的地址,Inte.NetworkV6需要ip版本6的地址;

    (2) SocketType 参数指定socket类型,Raw支持基础传输协议访问,Stream支持可靠,双向,基于连接的数据流;

    (3) ProtocolType 表示socket支持的网络协议,如常用的TCP和UDP协议。

    3 定义主机对象
    (1) IPEndPoint类

    原型:

    a)  

    public IPEndPoint(IPAddress address,int port)  

    参数address可以直接填写主机的IP,如"192.168.2.1";

    b)

    public IPEndPoint(long address,int port)

    参数address整型int64如123456,参数port端口int32,如6655。

    (2) 利用DNS服务器解析主机,使用Dns.Resolve方法

    原型:

    public static IPHostEntry Resolve(string hostname)

    参数:待解析的主机名称,返回IPHostEntry类值,IPHostEntry为Inte.Net主机地址信息提供容器,该容器提供存有IP地址列表,主机名称等。

    (3) Dns.GetHostByName获取本地主机名称

    原型:

    public static IPHostEntry GetHostByName(string hostname)

    (4) GetHostByAddress

    原型:

    a)

    public static IPHostEntry GetHostByAddress(IPAddress address)

    参数:IP地址。

    b)

    public static IPHostEntry GetHostByAddress(string address)

    参数:IP地址格式化字符串。

    3.4 端口绑定和监听

      同步套接字服务器主机的绑定和端口监听,Socket类的Bind(绑定主机),Listen(监听端口),Accept(接收客户端的连接请求)。

    (1) Bind

    原型:

    public void Bind(EndPoint LocalEP)

    参数为主机对象 IPEndPoint

    (2) Listen

    原型:

    public void Listen(int backlog)

    参数整型数值,挂起队列最大值

    (3) accept

    原型:

    public socket accept()

    返回为套接字对象

    3.5 socket的发送和接收方法

    (1) 发送数据

    a)socket类的send方法

    原型一:

    public int Send(byte[] buffer)

    参数:待发送的字节数组;

    原型二:

    public int Send(byte[],SocketFlags)

    SocketFlags成员列表:

    DontRoute不使用路由表发送,

    MaxIOVectorLength为发送和接收数据的wsabuf结构数量提供标准值,

    None 不对次调用使用标志,

    OutOfBand消息的部分发送或接收,

    Partial消息的部分发送或接收,

    Peek查看传入的消息。

    原型三:

    public int Send(byte[],int,SocketFlags)

    参数二要发送的字节数

    原型四:

    public int Send(byte[],int,int,SocketFlags)

    参数二为Byte[]中开始发送的位置

    b) NetWordStream类的Write方法

    原型:

    public override void write(byte[] buffer,int offset,int size)

    参数分别为:字节数组,开始字节位置,总字节数。

    (2) 接收数据

    a) Socket类Receive方法

    原型一:

    public int Receive(byte[] buffer) 

    原型二:

    public int Receive(byte[],SocketFlags)

    原型三:

    public int Receive(byte[],int,SocketFlags)  

     原型四:

    public int Receive(byte[],int,int,SocketFlags)

    Socket类Receive方法的相关参数可参看Socket类Send方法中的参数。

    b) NetworkStream类的Read方法

    public override int Read(int byte[] buffer,int offset,int size)

    参数可参看NetworkStream类的Write方法。

    Socket.Available 属性

    获取已经从网络接收且可供读取的数据量。

    命名空间:   System.Net.Sockets
    程序集:  System(System.dll 中)

    从网络接收的、可供读取的数据的字节数。

  • 相关阅读:
    无线鼠标和无线键盘能不能唤醒睡眠中的电脑的解决方案
    教你如何设置同时上内外网(单网卡或双网卡)
    Oracle_字符集问题(数据库与客户端字符集关联关系)
    关于破解移动宽带光猫 型号: GS3101 超级管理员密码
    Oracle 低版本客户端连接 18c 报ORA-28040 和 ORA-01017 错误的解决方法
    sql语句分组统计出年月日下数据记录数目
    Servlet文件上传
    ActiveMq+zookeeper+levelDB集群整合配置
    mongodb 级联操作查询时,关联条件
    maven插件地址博客园
  • 原文地址:https://www.cnblogs.com/michellexiaoqi/p/9739137.html
Copyright © 2020-2023  润新知