• 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;
                }
            }
        }

    }

  • 相关阅读:
    《Linux C编程一站式学习》第5章深入理解函数课后作业
    《Linux C编程一站式学习》——常量、变量和表达式notes
    《Linux C编程一站式学习》——第一个程序HelloWorld.c
    二分排序java实现
    leetcode初级算法(数组)——从数组中删除重复项
    利用层次遍历原理构建二叉树
    canvas学习笔记:绘制各种图形
    获取字符串长度【把双字节的替换成两个单字节的然后再获得长度
    oracle PLSQL程序造数据笔记
    oracle取一条记录中多个列的最大值和最小值
  • 原文地址:https://www.cnblogs.com/bigmouthz/p/946186.html
Copyright © 2020-2023  润新知