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

}

posted @ 2007-11-01 21:40  我想去长安  阅读(162)  评论(0编辑  收藏  举报