美文网首页
网络编程之公共方法

网络编程之公共方法

作者: 不良人Don | 来源:发表于2017-05-03 11:43 被阅读0次

在网络编程中经常需要发送/接受数据,故将经常运用到的方法放入到一个类库中,方便在各个地方调用。

此类库主要引用的命名空间是System及System.Net.Scokets。

下面呈上代码:

/// <summary>
/// 接收变长的数据,要求其打头的4个字节代表有效数据的长度
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
public static byte[] ReceiveVarData(Socket s)
{
      if (s == null)
           throw new ArgumentNullException("s");
      int total = 0;  //已接收的字节数
      int recv;
      //接收4个字节,得到“消息长度”
      byte[] datasize = new byte[4];
      recv = s.Receive(datasize, 0, 4, 0);
      int size = BitConverter.ToInt32(datasize, 0);
      //按消息长度接收数据
      int dataleft = size;
      byte[] data = new byte[size];
      while (total < size)
      {
           recv = s.Receive(data, total, dataleft, 0);
           if (recv == 0)
           {
                break;
           }
           total += recv;
           dataleft -= recv;
      }
      return data;
}
/// <summary>
/// 发送变长的数据,将数据长度附加于数据开头
/// </summary>
/// <param name="s"></param>
/// <param name="data"></param>
/// <returns></returns>
public static int SendVarData(Socket s, byte[] data)
{
     int total = 0;
     int size = data.Length;  //要发送的消息长度
     int dataleft = size;     //剩余的消息
     int sent;
     //将消息长度(int类型)的,转为字节数组
     byte[] datasize = BitConverter.GetBytes(size);
     //将消息长度发送出去
     sent = s.Send(datasize);
     //发送消息剩余的部分
     while (total < size)
     {
          sent = s.Send(data, total, dataleft, SocketFlags.None);
          total += sent;
          dataleft -= sent;
      }
      return total;
}

相关文章

  • 网络编程之公共方法

    在网络编程中经常需要发送/接受数据,故将经常运用到的方法放入到一个类库中,方便在各个地方调用。 此类库主要引用的命...

  • iOS网络编程(四):缓存类NSURLCache介绍

    网络请求中缓存类NSURLCache常用属性和方法: 参考:iOS网络编程之六——数据缓存类NSURLCache使用解析

  • Java内存模型总结(摘选)

    Java的并发采用的是共享内存模型(而非消息传递模型),线程之间共享程序的公共状态,线程之间通过写-读内存中的公共...

  • Java内存模型学习

    并发编程模型分类:共享内存:线程之间共享程序的公共状态,线程之间通过写-读内 存中的公共状态来隐式进行通信消息传递...

  • 公共网络

    为什么要做公共网络?首先要明白什么是公共网络。 公共网络,顾名思义"我们大家的网络"。关键在"公共"。 网络虚拟经...

  • 【并发编程】- 内存模型(针对JSR-133内存模型)篇

    并发编程模型 1.两个关键问题 1)线程之间如何通信 共享内存程之间共享程序的公共状态,通过写-读内存中的公共状态...

  • 公共网络

    模拟电话线路 模拟电话线路其实就是利用固定电话线路进行通信,让计算机与电话线相连需要有一个数字信号转换成模拟信号的...

  • 公共网络

    高金波老师说:这是一个最好的时代,也是一个最坏的时代。关键取决于我们怎么看待未来。如果我们发现智能化,推动智能化实...

  • 公共网络

    云钱包、云库房两条独立跑道,互相清淤 公共网络是一套基础公开、透明、历史数据与贡献的系统解决方案。每个板块...

  • 07 JMM

    1 JMM基础 线程之间如何通信及线程之间如何同步共享内存 java线程之间共享程序的公共状态,通过写-读内存中的...

网友评论

      本文标题:网络编程之公共方法

      本文链接:https://www.haomeiwen.com/subject/tzyktxtx.html