• .Net中的Socket通讯


    .NetFrameWork为Socket通讯提供了System.Net.Socket命名空间,在这个命名空间里面有以下几个常用的重要类分别是:
    ·Socket类 这个低层的类用于管理连接,WebRequest,TcpClient和UdpClient在内部使用这个类。
    ·NetworkStream类 这个类是从Stream派生出来的,它表示来自网络的数据流
    ·TcpClient类 允许创建和使用TCP连接
    ·TcpListener类 允许监听传入的TCP连接请求
    ·UdpClient类 用于UDP客户创建连接(UDP是另外一种TCP协议,但没有得到广泛的使用,主要用于本地网络)

    一、使用Socket实现两机通信(TCP)

    示例代码请见附件<使用Socket实现两机通信>

    c# 代码

    1. Socket(AddressFamily addressFamily,SocketType socketType,ProtocolType protocolType);

    其中,addressFamily 参数指定 Socket 使用的寻址方案,socketType 参数指定 Socket 的类型,protocolType 参数指定 Socket 使用的协议。

    服务端:

    1、创建Socket实例

    c# 代码

    1. Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 

    2、将此Socket实例绑定至服务器(本机)的某个端口

    c# 代码

    1. IPAddress ip = IPAddress.Parse("172.16.1.15"); 
    2. IPEndPoint ipe = new IPEndPoint(ip, 2000); 
    3. s.Bind(ipe);//绑定2000端口

    3、开始监听,如果监听到则进行相应的处理

    客户端:

    c# 代码

    1. while (true
    2. s.Listen(0);//开始监听
    3. Socket temp = s.Accept();//为新建连接创建新的Socket。
    4. string recvStr = ""; 
    5. byte[] recvBytes = new byte[1024]; 
    6. int bytes; 
    7. bytes = temp.Receive(recvBytes, recvBytes.Length, 0);//从客户端接受信息
    8. recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes); 
    9. Console.WriteLine("Server Get Message:{0}", recvStr);//把客户端传来的信息显示出来
    10. string sendStr = "From server: Ok!Client Send Message Sucessful!"; 
    11. byte[] bs = Encoding.ASCII.GetBytes(sendStr); 
    12. temp.Send(bs, bs.Length, 0);//返回客户端成功信息
    13. temp.Close(); 

    1、创建Socket实例

    c# 代码

    1. Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

    2、将此Socket连接到服务器

    c# 代码

    1. IPAddress ip = IPAddress.Parse("172.16.1.15"); 
    2. IPEndPoint ipe = new IPEndPoint(ip, 2000);//把ip和端口转化为IPEndPoint实例
    3. c.Connect(ipe);//连接到服务器

    3、向服务器发送信息

    c# 代码

    1. string sendStr = "hello!This is a socket test"; 
    2. byte[] bs = Encoding.ASCII.GetBytes(sendStr); 
    3. c.Send(bs, bs.Length, 0);//发送测试信息

    4、接收服务器返回的信息

    c# 代码

    1. string recvStr = ""; 
    2. byte[] recvBytes = new byte[1024]; 
    3. int bytes; 
    4. bytes = c.Receive(recvBytes, recvBytes.Length, 0);//从服务器端接受返回信息
    5. recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes); 
    6. Console.WriteLine("Client Get Message:{0}", recvStr);//显示服务器返回信息

    5、关闭Socket

    c# 代码

    1. c.Close();

    Socket通信.rar

  • 相关阅读:
    NTFS 的默认簇大小
    磁盘管理中显示的磁盘顺序(磁盘0、磁盘1、磁盘2)与接口(sata、pci、nvme)之间的关系
    FastCopy可以拷贝文件保留原创建日期+几种模式
    三款数据恢复软件
    windows的存储池和存储空间(windows10新建好存储空间后,系统会根据分区容量的大小自动设置簇大小,如需更改,请到磁盘管理中删除分区后新建简单卷)
    响应式web原型设计工具——froont
    单个硬盘和软raid 0(windows 存储空间的存储池)性能对比(结果是差不多:()
    怎样使用工具更改磁盘簇大小
    存储空间概述(微软文档)
    申请微信商户API证书、设置AIPv2密钥\设置AIPv3密钥
  • 原文地址:https://www.cnblogs.com/99app/p/3486584.html
Copyright © 2020-2023  润新知