zoukankan      html  css  js  c++  java
  • Asp.net Socket客户端

    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
    }

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/shaily/archive/2009/05/31/4230005.aspx

  • 相关阅读:
    python : matplotlib does not work in Eclipse
    在线代码生成器的设计和使用
    Hama——BSP、Graph教程
    oozie:hadoop中的工作流引擎
    oracle命令建库全过程
    IntelliJ IDEA 自动生成方法注释(含参数及返回值)转+亲测IDEA2018.3
    转:Can't connect to MySQL server on 'XXXX' (10055) 解决方案
    资源的释放
    java中的break、continue、return的区别
    解析xml文件的方式
  • 原文地址:https://www.cnblogs.com/zhangq723/p/1765225.html
Copyright © 2011-2022 走看看