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

时间:2021-05-28

客户端代码

复制代码 代码如下:
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("发送内容");

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章