在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
客户端代码 复制代码 代码如下: 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("发送内容"); |
请发表评论