因为我在百度上看见的类似文章都太复杂 不适合新手看 下面的是比较简单的参数和应用 没有太设置一些详细参数 比较适合新手看 想研究详细的可以去看MSDN

 

bool b = true;
socket clientsocket = new socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress ip = IPAddress.Parse(“192.168.1.100”);

 

private void Form1_Load(object sender, EventArgs e)
{

//关闭线程监视 这句话防止多线程调用出错挺好用的 但是还是尽量使用委托吧 这个不一定什么事报个奇葩错误 

Control.CheckForIllegalCrossThreadCalls = false;

//启动新线程执行连接方法 
Thread cc = new Thread(ClientConnect);
cc.IsBackground = true;
cc.Start();

}

 

/// <summary>
/// 连接方法
/// </summary>
/// <returns></returns>

public void ClientConnect()
{

//循环一下 如果连不上 就一直连 如果担心耗资源可以让线程在循环里休眠几秒钟
while (b)
{
try
{

//字符串转成字节数组
byte[] buffer = Encoding.UTF8.GetBytes(“StormStormStormStormStormStorm”);

//配置服务器IP与端口 进行连接

clientSocket.Connect(new IPEndPoint(ip, 1234)); 

//这个明显了 发送刚才的字节数组
clientSocket.Send(buffer);

//到这步都没报错基本就是ok了 那就不要循环连接了吧
b = false;
//启动新线程检测连接状态 这个是为了断线重连
Thread gs = new Thread(GetStaus);
gs.IsBackground = true;
gs.Start();
}
catch
{
b = true;
}
}
}

 

/// <summary>
/// 发现断线重连的方法
/// </summary>
/// <returns></returns>
public void GetStaus()
{

//循环检测
while (true)
{

//五秒检测一次就够了

Thread.Sleep(500);

//判断连接状态
if (clientSocket.Connected == false)
{

//如果在这个方法里发现没有连接那就是中途断了 让全局变量b控制连接方法一直到连接成功
b = true;

//启动
Thread cc = new Thread(ClientConnect);
cc.IsBackground = true;
cc.Start();
}
}

}

 

7kb.org 原创,如有转载请注明出处 www.7kb.org