zoukankan      html  css  js  c++  java
  • Common.TcpLib _Bgz_ConnectionState.cs

    using System;
    using System.Text;
    using System.Collections;
    using System.Collections.Generic;
    using System.Net;
    using System.Net.Sockets;
    using System.Threading;
    using System.Runtime.InteropServices;
    using System.IO;

    namespace Common.TcpLib
    {

        public class _Bgz_ConnectionState
        {
            #region var
            public Socket _conn = null;    //Socket
            public byte[] _buffer;  //缓冲区
            public int _count = 0;  //当前接收次数
            public bool _getonceall = false; //是否一次性得到接收的内容

            public Stream _dataStream = new MemoryStream();//数据流

            #endregion

            #region ctor
            public _Bgz_ConnectionState()
            {
                Init();
            }

            public _Bgz_ConnectionState(Socket socket)
            {
                _buffer = new byte[0];
                _getonceall = false;
                _count = 0;
                _dataStream = new MemoryStream();
                _conn = socket;
            }

            #endregion

            #region property

            public EndPoint RemoteEndPoint
            {
                get { return _conn.RemoteEndPoint; }
            }

            public EndPoint LocalEndPoint
            {
                get { return _conn.LocalEndPoint; }
            }

            public string StrRemoteEndPoint
            {
                get
                {
                    IPEndPoint info = (IPEndPoint)_conn.RemoteEndPoint;
                    return info.Address.ToString() + ":" + info.Port.ToString();
                }
            }

            public string StrLocalEndPoint
            {
                get
                {
                    IPEndPoint info = (IPEndPoint)_conn.LocalEndPoint;
                    return info.Address.ToString() + ":" + info.Port.ToString();
                }
            }

            public int AvailableData
            {
                get { return _conn.Available; }
            }

            public bool Connected
            {
                get { return _conn.Connected; }
            }

            #endregion

            public void Init()
            {
                _conn = null;
                _buffer = new byte[0];
                _getonceall = false;
                _count = 0;
                _dataStream = new MemoryStream();
            }

            public int Read(byte[] buffer, int offset, int count)
            {
                try
                {
                    if (_conn.Available > 0)
                        return _conn.Receive(buffer, offset, count, SocketFlags.None);
                    else return 0;
                }
                catch
                {
                    return 0;
                }
            }

            public bool Write(byte[] buffer, int offset, int count)
            {
                try
                {
                    _conn.Send(buffer, offset, count, SocketFlags.None);
                    return true;
                }
                catch
                {
                    return false;
                }
            }
        }

    }

  • 相关阅读:
    ios中的任务分段
    UVA 531
    OGG同构(ORACLE-ORACLE)、异构(ORACLE-MYSQL)同步配置及错误解析
    JavaScript自调用匿名函数
    Redis 主从配置和参数详解
    python开发环境设置(windows)
    Havel-Hakimi定理 hdu2454 / poj1695 Havel-Hakimi定理
    libevent源码分析-介绍、安装、使用
    Linux网络监控工具nethogs
    spring(3)------控制反转(IOC)/依赖注入(DI)
  • 原文地址:https://www.cnblogs.com/bigmouthz/p/946186.html
Copyright © 2011-2022 走看看