当前位置:  编程技术>.net/c#/asp.net

.net socket客户端实例代码分享

    来源: 互联网  发布时间:2014-08-25

    本文导语:  客户端代码 代码如下:using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Net; using System.Threading; using System.Net.Sockets;   namespace W.Common {     public class CacheSocket     {         public Socket ...

客户端代码

代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data;

using System.Net;

using System.Threading;

using System.Net.Sockets;

 

namespace W.Common

{

    public class CacheSocket

    {

        public Socket skClient;

        public string ip = string.Empty;

        public int port = -1;

        public int netID;

        // public int timeSleep = 1;

 

        //每次接收发送的临时信息

        private byte[] sendData;//发送的信息

        private byte[] receiveData = new byte[1024];//接收信息

        private int receiveN;

        private bool isErr = false;

        //--------

 

        public CacheSocket(int pNetID)

        {

            this.netID = pNetID;

            GetConfig();

            Connection();

            Cmd("netid:" + this.netID);

        }

 

        public CacheSocket(int pNetID, string pIP, int pPort)

        {

            this.ip = pIP;

            this.port = pPort;

            Connection();

            Cmd("netid:" + pNetID);

        }

 

        public string Cmd(string key)

        {

            lock (this)//一个信息发送后再接收为一次完成过程

            {

                this.sendData = Encoding.UTF8.GetBytes(key);

 

                try

                {

                    this.skClient.Send(this.sendData);

                }

                catch (Exception ex)

                {

                    isErr = true;

                    ("Send" + ex.Message).WriteLine();

                    ReSocket(() => { this.skClient.Send(this.sendData); });

                }

 

                try

                {

                    this.receiveN = this.skClient.Receive(this.receiveData);

                }

                catch (Exception ex)

                {

                    isErr = true;

                    ReSocket(() => { this.receiveN = this.skClient.Receive(this.receiveData); });

                    ("Receive" + ex.Message).WriteLine();

                }

 

                return Encoding.UTF8.GetString(this.receiveData, 0, this.receiveN);

            }

        }

 

        public delegate void ReSocket_D();

        private void ReSocket(ReSocket_D d)

        {

            if (isErr)

            {

                Connection();

 

                this.sendData = Encoding.UTF8.GetBytes("netid:" + this.netID);

                this.skClient.Send(this.sendData);

 

                this.receiveN = this.skClient.Receive(this.receiveData);

                if (Encoding.UTF8.GetString(this.receiveData, 0, this.receiveN) != "1")

                {

 

                }

 

                d();

                this.isErr = false;

            }

        }

 

        #region 获取IP和端口

        private void GetConfig()

        {

            this.ip = "127.0.0.1";   

            this.port = 1234;

        }

        #endregion

 

        #region 连接套接字

        private void Connection()

        {

            this.skClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            IPEndPoint ie = new IPEndPoint(IPAddress.Parse(this.ip), this.port);//服务器的IP和端口

            skClient.Connect(ie);

 

            byte[] data = new byte[7];

            this.receiveN = this.skClient.Receive(data);

 

            string s = Encoding.UTF8.GetString(data, 0, this.receiveN);

            if (s != "success")

            {

                throw new Exception("连接不成功" + s);

            }

        }

        #endregion

    }

}

使用方法

代码如下:

 public static readonly CacheSocket cac=new CacheSocket(2);

 cac.Cmd("发送内容");
 


    
 
 

您可能感兴趣的文章:

  • 基于Web的FTP客户端 net2ftp
  • 有没有办法把客户端IP和计算机名记录在asp.net服务器上?
  • asp.net直接向客户端输出文件内容并提示保存的方法
  • 编个客户端,如何向类似"http://www.csdn.net/expert/index.asp?room=参数"发送参数?
  • 基于.net中突破每客户端两个http连接限制的详细介绍
  • asp.net按钮只执行客户端代码不回送页面的方法
  • asp.net获取客户端参数与操作系统信息
  • ASP.net中获取客户端参数操作系统信息
  • .NET下 c#通过COM组件操作并导出Excel实例代码
  • asp.net输出重写压缩页面文件的实例
  • vb.net实例代码 连接访问数据库文件(mdb)
  • c#(asp.net)连接excel的实例代码
  • DataGrid的Pagable(VB.NET)实例代码
  • vb.net实例代码 在访问表中遍历记录
  • 关于C#.net winform程序验证moss的集成身份认证实例
  • asp.net 伪静态简单实例
  • .net实现序列化与反序列化实例解析
  • vb.net DropDownList控件实例代码 在DropDownList控件中显示访问数据
  • C#实现只运行单个实例应用程序的方法(使用VB.Net的IsSingleInstance)
  • asp.net取得所有颜色值实例
  • 各位之不知道net-snmp是否收费?我的产品中用到了net-snmp lib是否需要向什么单位或者组织付费? iis7站长之家
  • asp.net 动态添加多个用户控件(实例代码)
  • asp.net实例 定义和使用asp:AccessDataSource
  • asp.net 动态创建控件的演示实例
  • asp.net 邮件发送类的简单实例
  • asp.net实例代码 在DataGrid控件中显示数据
  • ASP.net WebAPI 上传图片实例
  • asp.net 操作cookie实例详解
  • asp.net读取与删除磁盘文件的实例代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 用windows客户机登陆Linux服务器不能建立建立文件夹????[img=http://forum.csdn.net/PointForum/ui/scrip
  • java命名空间javax.net类socketfactory的类成员方法: createsocket定义及介绍
  • .NET版的ExtJS库 Ext.Net
  • java命名空间java.net类datagramsocket的类成员方法: disconnect定义及介绍
  • node.js的.net扩展 node.net
  • java命名空间java.net类datagramsocket的类成员方法: close定义及介绍
  • 为什么输http://www.china-java.net,会自动改为http://www.china-java.net:8081?
  • java命名空间java.net接口cookiestore的类成员方法: get定义及介绍
  • 各位之不知道net-snmp是否收费?我的产品中用到了net-snmp lib是否需要向什么单位或者组织付费?
  • java命名空间java.net类socket的类成员方法: isbound定义及介绍
  • 【人才】有没有人会用VC6.0/VS2003.NET/VS2005.NET写WINDOWS下的驱动程序呀。
  • java命名空间java.net类datagrampacket的类成员方法: getsocketaddress定义及介绍
  • Java.NET or J#.NET is coming!
  • java命名空间java.net类multicastsocket的类成员方法: getinterface定义及介绍
  • make menuconfig时出错:net/Kconfig:221:can't open file "net/wireless/Kconfig"
  • java命名空间java.net枚举proxy.type的类成员方法: http定义及介绍
  • 用过net-snmp(ucd-snmp)的大侠用过net-snmp(ucd-snmp)请进(来者有分)
  • java命名空间java.net类urisyntaxexception的类成员方法: getreason定义及介绍
  • 常用.NET工具(包括.NET可再发行包2.0)下载
  • java命名空间java.net类datagramsocketimpl的类成员方法: getlocalport定义及介绍
  • Ja.Net
  • java命名空间java.net类httpretryexception的类成员方法: getreason定义及介绍
  • asp.net判断数据库表是否存在 asp.net修改表名的方法


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3