添加项目文件。
This commit is contained in:
132
Common/ModbusLightHelper.cs
Normal file
132
Common/ModbusLightHelper.cs
Normal file
@ -0,0 +1,132 @@
|
||||
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
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user