Asp.net Socket客户端(远程发送和接收数据)

复制代码 代码如下:

  /***************************************

  * 对象名称: SocketObj

  * 功能说明: 远程发送与接收

  * 试用示例:

  * using EC; //引用空间名

  * string url = "218.75.111.74"; // URL也可以是(http://www.baidu.com/)这种形式

  * int port = 8000; //端口

  * string SendStr = "domainname\n"; //组织要发送的字符串

  * SendStr += "check\n";

  * SendStr += "entityname:domains\n";

  * SendStr += "domainname:" + this.TextBox1.Text + "\n";

  * SendStr += ".\n";

  * EBSocketObj o = new SocketObj(); //创建新对象

  * o.Connection(url, port); //打开远程端口

  * o.Send(SendStr); //发送数据

  * Response.Write(o.Recev()); //接收数据

  * o.Dispose(); //销毁对象

  **********************************************/

  using System;

  using System.IO;

  using System.Net;

  using System.Net.Sockets;

  using System.Text;

  namespace EC

  {

  /// <summary>

  /// Socket 远程发送与接收

  /// </summary>

  public class SocketObj

  {

  private NetworkStream ns;

  private bool _alreadyDispose = false;

  #region 构造与释构

  public EBSocketObj()

  {

  //

  // TODO: 在此处添加构造函数逻辑

  //

  }

  public EBSocketObj(string url, int port)

  {

  Connection(url, port);

  }

  ~EBSocketObj()

  {

  Dispose();

  }

  protected virtual void Dispose(bool isDisposing)

  {

  if (_alreadyDispose) return;

  if (isDisposing)

  {

  if (ns != null)

  {

  try

  {

  ns.Close();

  }

  catch (Exception E) { }

  ns.Dispose();

  }

  }

  _alreadyDispose = true;

  }

  #endregion

  #region IDisposable 成员

  public void Dispose()

  {

  Dispose(true);

  GC.SuppressFinalize(this);

  }

  #endregion

  #region 打开端口

  /// <summary>

  /// 打开端口

  /// </summary>

  /// <param name="url">URL或者:IP地址</param>

  /// <param name="port"></param>

  /// <returns></returns>

  public virtual void Connection(string url, int port)

  {

  if (url == null || url == "") return;

  if (port < 0) return;

  if (port.ToString()==string.Empty) port = 80;

  TcpClient tcp = null;

  try

  {

  tcp = new TcpClient(url, port);

  }

  catch (Exception E)

  {

  throw new Exception("Can't connection:" + url);

  }

  this.ns = tcp.GetStream();

  }

  #endregion

  #region 发送Socket

  /// <summary>

  /// 发送Socket

  /// </summary>

  /// <param name="ns"></param>

  /// <param name="message"></param>

  /// <returns></returns>

  public virtual bool Send(string message)

  {

  if (ns == null) return false;

  if (message == null || message == "") return false;

  byte[] buf = Encoding.ASCII.GetBytes(message);

  try

  {

  ns.Write(buf, 0, buf.Length);

  }

  catch (Exception E)

  {

  throw new Exception("Send Date Fail!");

  }

  return true;

  }

  #endregion

  #region 收取信息

  /// <summary>

  /// 收取信息

  /// </summary>

  /// <param name="ns"></param>

  /// <returns></returns>

  public string Recev()

  {

  if (ns == null) return null;

  byte[] buf = new byte[4096];

  int length = 0;

  try

  {

  length = ns.Read(buf, 0, buf.Length);

  }

  catch (Exception E)

  {

  throw new Exception("Receive data fail!");

  }

  return Encoding.ASCII.GetString(buf, 0, length);

  }

  #endregion

  }

  }