132 lines
3.8 KiB
C#
132 lines
3.8 KiB
C#
![]() |
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using System.Net;
|
|||
|
using System.Net.Sockets;
|
|||
|
using System.Text;
|
|||
|
using System.Threading;
|
|||
|
using System.Threading.Tasks;
|
|||
|
|
|||
|
|
|||
|
namespace Epost.Common
|
|||
|
{
|
|||
|
public class ModbusLightHelper
|
|||
|
{
|
|||
|
public Socket newclient;
|
|||
|
private IPEndPoint ie;
|
|||
|
public bool Connect(string ipadd, int port)
|
|||
|
{
|
|||
|
byte[] data = new byte[1024];
|
|||
|
//创建一个套接字
|
|||
|
ie = new IPEndPoint(IPAddress.Parse(ipadd), port);
|
|||
|
newclient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
|||
|
|
|||
|
//将套接字与远程服务器地址相连
|
|||
|
try
|
|||
|
{
|
|||
|
|
|||
|
newclient.Connect(ie);
|
|||
|
return true;
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
catch (SocketException e)
|
|||
|
{
|
|||
|
LogHelper.WriteLogInfo("通道灯异常"+e.Message);
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
public void LightLight(byte[] data)
|
|||
|
{
|
|||
|
|
|||
|
while (true)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
System.Threading.Thread.Sleep(150);
|
|||
|
if (!newclient.Connected)
|
|||
|
{
|
|||
|
newclient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
|||
|
newclient.Connect(ie);
|
|||
|
}
|
|||
|
newclient.Send(data);
|
|||
|
//while (true)//定义循环,以便可以简历N次连接
|
|||
|
//{
|
|||
|
// LogHelper.WriteLogInfo("--start--");
|
|||
|
// Thread.Sleep(2000);
|
|||
|
|
|||
|
// string recvStr = "";
|
|||
|
// byte[] recvBytes = new byte[1024];
|
|||
|
// int bytes;
|
|||
|
// bytes = newclient.Receive(recvBytes, recvBytes.Length, 0);//从客户端接受信息
|
|||
|
// recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);
|
|||
|
|
|||
|
|
|||
|
// string sendStr = "HTTP/1.0 200 OK";
|
|||
|
// byte[] bs = Encoding.ASCII.GetBytes(sendStr);
|
|||
|
// //newclient.Send(bs, bs.Length, 0);//返回信息给客户端
|
|||
|
|
|||
|
// if (newclient != null)
|
|||
|
// newclient.Close();
|
|||
|
// break;
|
|||
|
|
|||
|
|
|||
|
//}
|
|||
|
while (true)//定义一个循环接收返回数据
|
|||
|
{
|
|||
|
byte[] data1 = new byte[1024];
|
|||
|
newclient.Receive(data1);
|
|||
|
//int length = data1[5];
|
|||
|
bool result = true;
|
|||
|
for (var i = 0; i < 7; i++)
|
|||
|
{
|
|||
|
if (data[i] != data1[i])
|
|||
|
result = false;
|
|||
|
}
|
|||
|
|
|||
|
if (result)//(!string.IsNullOrWhiteSpace(stringData))
|
|||
|
{
|
|||
|
if (newclient != null)
|
|||
|
newclient.Close();
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
catch
|
|||
|
{
|
|||
|
continue;
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
public void CloseSock()
|
|||
|
{
|
|||
|
if (newclient == null)
|
|||
|
return;
|
|||
|
|
|||
|
if (!newclient.Connected)
|
|||
|
return;
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
newclient.Shutdown(SocketShutdown.Both);
|
|||
|
}
|
|||
|
catch
|
|||
|
{
|
|||
|
}
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
newclient.Close();
|
|||
|
}
|
|||
|
catch
|
|||
|
{
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|