如何实现.netsocket客户端-创新互联

本篇内容介绍了“如何实现.net socket客户端”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

创新互联建站2013年至今,先为安化等服务建站,安化等地企业,进行企业商务咨询服务。为安化企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

客户端代码

复制代码 代码如下:

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("发送内容");


“如何实现.net socket客户端”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


新闻名称:如何实现.netsocket客户端-创新互联
文章网址:http://scyanting.com/article/hippd.html