zoukankan      html  css  js  c++  java
  • Socket/Stream Data Helper

    
    namespace Microshaoft
    {
        using System;
        using System.IO;
        using System.Net.Sockets;
        public static class SocketDataHelper
        {
            public static void ReadDataToFixedLengthBytes
                                    (
                                        Socket socket ,
                                        ref byte[] buffer
                                    )
            {
                int p = 0;
                int l = buffer.Length;
                while (p < l)
                {
                    int r = socket.Receive
                                        (
                                            buffer
                                            , p
                                            , l - p
                                            , SocketFlags.None
                                        );
                    p += r;
                }
            }
            public static byte[] ReadDataToFixedLengthBytes
                                        (
                                            int length ,
                                            Socket socket 
                                        )
            {
                int p = 0;
                byte[] data = new byte[length];
                while (p < length)
                {
                    int r = socket.Receive
                                        (
                                            data
                                            , p
                                            , length - p
                                            , SocketFlags.None
                                        );
                    p += r;
                }
                return data;
            }
            public static byte[] ReadDataToBytes
                                        (
                                            int length,
                                            Socket socket
                                        )
            {
                byte[] data = new byte[length];
                int r = 0;
                //SocketError error;
                r = socket.Receive
                                (
                                    data
                                    , 0
                                    , length
                                    , SocketFlags.None
                                    //, out error
                                );
                //if (error != SocketError.Success)
                //{
                //    Console.WriteLine("socket error: {0}", Enum.GetName(typeof(SocketError), error));
                //    Thread.Sleep(100);
                //}
                if (r > 0)
                {
                    Array.Resize<byte>(ref data, r);
                }
                else
                {
                    data = null;
                }
                return data;
            }
            public static int ReadDataToBytes
                                    (
                                        Socket socket ,
                                        ref byte[] buffer
                                    )
            {
                int r = 0;
                //SocketError error;
                int l = buffer.Length;
                r = socket.Receive
                                (
                                    buffer
                                    , 0
                                    , l
                                    , SocketFlags.None
                                    //, out error
                                );
                //if (error != SocketError.Success)
                //{
                //    Console.WriteLine("socket error: {0}", Enum.GetName(typeof(SocketError), error));
                //    Thread.Sleep(100);
                //}
                if (r > 0)
                {
                    Array.Resize<byte>(ref buffer, r);
                }
                else
                {
                    buffer = null;
                }
                return r;
            }
        }
        public static class StreamDataHelper
        {
            private static byte[] ReadDataToBytes(Stream stream)
            {
                byte[] buffer = new byte[64 * 1024];
                MemoryStream ms = new MemoryStream();
                int r = 0;
                int l = 0;
                long position = -1;
                if (stream.CanSeek)
                {
                    position = stream.Position;
                    stream.Position = 0;
                }
                while (true)
                {
                    r = stream.Read(buffer, 0, buffer.Length);
                    if (r > 0)
                    {
                        l += r;
                        ms.Write(buffer, 0, r);
                    }
                    else
                    {
                        break;
                    }
                }
                byte[] bytes = new byte[l];
                ms.Position = 0;
                ms.Read(bytes, 0, (int) l);
                ms.Close();
                ms = null;
                if (position >= 0)
                {
                    stream.Position = position;
                }
                return bytes;
            }
        }
    }
    
    
  • 相关阅读:
    禅道使用-升级
    Maven 的这 7 个问题你思考过没有?
    https及证书
    Linux下查看/管理当前登录用户及用户操作历史记录
    禅道的安装
    Linux添加/删除用户和用户组
    Spring注解@Component、@Repository、@Service、@Controller区别 .
    myeclipse,eclipse打开当前文件所在文件夹
    java开发常用工具
    Django环境搭建之安装mod_wsgi模块
  • 原文地址:https://www.cnblogs.com/Microshaoft/p/SocketStreamDataHelper.html
Copyright © 2011-2022 走看看