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

 更新时间:2013年12月03日 10:25:45   作者:  
这篇文章主要介绍了.net写的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("发送内容");
 

相关文章

  • ASP.NET对大文件上传的解决方案

    ASP.NET对大文件上传的解决方案

    在ASP.NET 开发的过程中,最大的问题就在于上传大文件时让开发者尤为的头疼,而且,上传时无法方便的做到多线程的操控和上传进度的显示。笔者在此给大家推荐一款简单易用的上传组件,从而快速便捷得解决了 ASP.NET 中的大文件上传问题
    2015-08-08
  • Asp.net cookie的处理流程深入分析

    Asp.net cookie的处理流程深入分析

    一说到Cookie我想大家都应该知道它是一个保存在客户端,当浏览器请求一个url时,浏览器会携带相关的Cookie达到服务器端,需要的朋友可以了解下
    2012-12-12
  • WPF项目在设计界面调用后台代码

    WPF项目在设计界面调用后台代码

    这篇文章介绍了WPF项目在设计界面调用后台代码的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • 通过.net core调用so文件的方法

    通过.net core调用so文件的方法

    工作中需要在linux上监控系统空闲时间,但是没有找到C#代码,只找到C的代码,所以准备将C文件编译为so然后用P/invoke调用,这篇文章主要介绍了如何通过.net core调用so文件,需要的朋友可以参考下
    2023-08-08
  • asp.net显示页面执行时间

    asp.net显示页面执行时间

    Global.asax需要添加的代码。利用我们了解当前页面的运行效率。
    2009-03-03
  • ajaxpro.dll 控件实现异步刷新页面

    ajaxpro.dll 控件实现异步刷新页面

    用ajaxpro.dll控件实现异步刷新页面的代码,需要的朋友可以参考下。
    2009-11-11
  • ASP.net(c#)用类的思想实现插入数据到ACCESS例子

    ASP.net(c#)用类的思想实现插入数据到ACCESS例子

    ASP.net(c#)用类的思想实现插入数据到ACCESS例子...
    2007-07-07
  • C#元组类型ValueTuple用法详解

    C#元组类型ValueTuple用法详解

    本文详细讲解了C#元组类型ValueTuple的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • 如何在ASP.NET Core类库项目中读取配置文件详解

    如何在ASP.NET Core类库项目中读取配置文件详解

    这篇文章主要给大家介绍了关于如何在ASP.NET Core类库项目中读取配置文件的相关资料,这是朋友提的一个问题,文中通过示例代码介绍的非常详解,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起看看吧。
    2017-10-10
  • 垃圾代码二三行 ASPX小马

    垃圾代码二三行 ASPX小马

    垃圾代码二三行 ASPX小马...
    2007-12-12

最新评论