源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-10-09 00:35 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:.net socket客户端实例代码分享
[b]客户端代码[/b]
[u]复制代码[/u] 代码如下:
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     } }
[b]使用方法 [/b]
[u]复制代码[/u] 代码如下:
 public static readonly CacheSocket cac=new CacheSocket(2);  cac.Cmd("发送内容");  
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部