C#UDP通信
来源:互联网 发布:linux命令执行漏洞函数 编辑:程序博客网 时间:2024/05/29 06:46
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
namespace LcSoftCard.Service
{
public class UDPConsumeServiceDS
{
private bool flag;
public bool Flag
{
get { return flag; }
set { flag = value; }
}
private IPEndPoint SendPoint;
private const int ConsumeRecCmdBackPort = 9998; //接收命令返回端口--第一路远程主从端口:9998 --PC
// --第一路本地主从端口:10000 --消费机 接收命令返回端口
private int ConsumeRecDataPort = Convert.ToInt32(ConfigurationManager.ConnectionStrings["FirstLocalPost"].ConnectionString.ToString()); //接收命令返回端口
private UdpClient UdpRecCmdBack; //接收发送命令返回数据
private Thread ThreadRecCmdBack;
private IPEndPoint RecCmdBackPiont;
public delegate void ConsumeHandler(string msg); //声明委托
public event ConsumeHandler ConsumeEvent; //声明事件
public void SendCommand(string cmd, string ip)
{
string rst = cmd.ToUpper() + AscSum(cmd.ToUpper());
SendPoint = new IPEndPoint(IPAddress.Parse(ip), ConsumeRecDataPort);
byte[] SendData = Encoding.ASCII.GetBytes(rst);
uint IOC_IN = 0x80000000;
uint IOC_VENDOR = 0x18000000;
uint SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12;
UdpRecCmdBack.Client.IOControl((int)SIO_UDP_CONNRESET, new byte[] { Convert.ToByte(false) }, null);
UdpRecCmdBack.Send(SendData, SendData.Length, SendPoint);
}
/// <summary>
/// ASCII求和
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public string AscSum(string str)
{
int sum = 0;
string rst;
if (str.Length == 0) return "00";
System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();
for (int i = 0; i < str.Length; i++)
{
sum += (int)asciiEncoding.GetBytes(str)[i];
}
sum %= 0x100;
rst = sum.ToString("x");
if (rst.Length < 2) rst = "0" + rst;
return rst.ToUpper();
}
public void StartRecCmdBackListen()
{
while (true)
{
byte[] recData = UdpRecCmdBack.Receive(ref RecCmdBackPiont);
string ReadStr = BitConverter.ToString(recData).Replace("-", "");
ReadStr = Encoding.ASCII.GetString(recData);
Flag = true;
if (ConsumeEvent != null)
{
ConsumeEvent(ReadStr);
}
}
}
/// <summary>
/// 开启监听线程
/// </summary>
public void ConsumeRun()
{
UdpRecCmdBack = new UdpClient(ConsumeRecCmdBackPort);
ThreadRecCmdBack = new Thread(new ThreadStart(StartRecCmdBackListen));
ThreadRecCmdBack.IsBackground = true;
ThreadRecCmdBack.Start();
}
public void ConsumeStop()
{
if (ThreadRecCmdBack != null)
{
ThreadRecCmdBack.Abort();
UdpRecCmdBack.Close();
}
}
}
}
- C#UDP通信+文件传输
- C#UDP通信
- C++UDP通信源码
- udp通信(C 语言)
- c#UDP通信实例复习
- C#UDP入门|Socket通信|UdpClient通信
- C#UDP入门|Socket通信|UdpClient通信
- [UDP] C#UDP入门|Socket通信|UdpClient通信
- [UDP] C#UDP入门|Socket通信|UdpClient通信
- c语言udp通信实例(linux)
- C语言--利用UDP实现socket通信
- c 语言下 TCP/UDP 通信
- linux下C语言UDP通信
- c语言udp通信实例(linux)
- [Linux C编程]UDP网络通信
- UDP通信
- UDP通信
- UDP通信
- 黑马程序员_五、继承、多态、抽象类及接口
- 命令模式(Command Pattern)
- mac系统故障排除几个基本方法
- 02_Spring3.2_属性类型构造注入
- Android中Button,ImageButton,ImageView之间的区别
- C#UDP通信
- Log4j日志
- Android安全分析挑战:运行时篡改Dalvik字节码 .
- 设计模式之Observer模式
- 归并排序
- 本地推送UILocalNotification
- vector中resize()和reserve()区别
- Android makefile写法(Android.mk)
- Win7系统下硬盘安装Ubuntu 12.04双系统