📄 sgiphelper.cs
字号:
/* jll(2005)版权所有,保留所有权力
* 文件名:SgipHelper.cs
* 用 途:这个文件提供一些helper函数以供其它地方调用
* 作 者:jll
* 完成日期:2005年8月2日
* 修订记录:
*/
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Reflection;
using System.Text.RegularExpressions;
using System.Net;
using System.Net.Sockets;
using System.Xml.Serialization;
namespace JLL.SGIP
{
public class SgipHelper
{
/// <summary>
/// 将一个byte[]转为ascii字符串,当读到\0时就返回
/// </summary>
/// <param name="buffer"></param>
/// <param name="nIndex"></param>
/// <param name="nCount"></param>
/// <returns></returns>
public static string GetASCIIString(byte[] buffer, int nIndex, int nCount)
{
StringBuilder result = new StringBuilder(nCount);
for (int i = 0; i < nCount; ++i)
{
if (buffer[nIndex + i] == '\0')
break;
result.Append((char)buffer[nIndex + i]);
}
return result.ToString();
}
/// <summary>
/// Socket操作超时
/// </summary>
public const int SocketTimeOut = 10060;
/// <summary>
/// 返回当前assembly所在的路径
/// </summary>
/// <returns></returns>
public static string GetCurrentAssemblyPath()
{
return Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + Path.DirectorySeparatorChar;
}
/// <summary>
/// 如果一个字符串所占用的字节数超过限额,就抛出异常
/// </summary>
/// <param name="strValue"></param>
/// <param name="maxBytes"></param>
public static void CheckMaxBytes(string strValue, int maxBytes)
{
if (Encoding.ASCII.GetBytes(strValue).Length > maxBytes)
{
throw new Exception(string.Format("字符最多只能有{0}个字节", maxBytes));
}
}
public static void CheckMaxBytes(byte[] buffer, int maxBytes)
{
if (buffer.Length > maxBytes)
{
throw new Exception(string.Format("最多只能有{0}个字节!", maxBytes));
}
}
/// <summary>
/// 判断一个字符串是否为手机号码(前号未加86等前缀的手机号码)
/// </summary>
public static bool IsNoPrefixMobileNumber(string strMobileNumber)
{
return Regex.IsMatch(strMobileNumber, @"^13\d{9}", RegexOptions.None);
}
/// <summary>
/// 判断一个字符串是否为未加前缀的手机号码,如果是则返回“86+输入", 否则返回输入的内容
/// </summary>
/// <param name="strMobileNumber"></param>
/// <returns></returns>
public static string Prefix86ForMobilbeNumber(string strMobileNumber)
{
return IsNoPrefixMobileNumber(strMobileNumber) ? ("86" + strMobileNumber) : strMobileNumber;
}
/// <summary>
/// 判断一个sokcet连接与否, 注意:这种方法来判断依然有bug,在某种情况下它将失效
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
public static bool IsSocketConnected(Socket s)
{
if (s.Connected)
{
try
{
byte[] byteSend = new byte[0];
s.Send(byteSend);
}
catch
{
}
}
return s.Connected;
}
/// <summary>
/// 先禁止socket的收、发,再关闭socket, 不会抛出异常!
/// </summary>
/// <param name="s"></param>
public static void ShutdownAndCloseSocket(Socket s)
{
try
{
s.Shutdown(SocketShutdown.Both);
s.Close();
}catch{
}
}
/// <summary>
/// 清空一个存放Command命令的缓冲块
/// </summary>
/// <param name="buffer"></param>
public static void ClearCommandBuffer(byte[] buffer)
{
for (int i = 0; i < 8; ++i)
{
buffer[i] = 0;
}
}
/// <summary>
/// 将一个对象序列化到一个xml文件
/// </summary>
/// <param name="strXmlFile"></param>
/// <param name="obj"></param>
public static void SaveAsXML(string strXmlFile, object obj)
{
XmlSerializer xs = new XmlSerializer(obj.GetType());
using (FileStream fs = new FileStream(strXmlFile, FileMode.OpenOrCreate))
{
xs.Serialize(fs, obj);
}
}
/// <summary>
/// 从xml文件中反序列化
/// </summary>
/// <param name="strXmlFile"></param>
/// <returns></returns>
public static T LoadFromXmlFile<T>(string strXmlFile)
{
XmlSerializer xs = new XmlSerializer(typeof(T));
object obj = null;
try
{
using (FileStream fs = new FileStream(strXmlFile, FileMode.Open))
{
obj = xs.Deserialize(fs);
}
}
catch
{
}
return (T)obj;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -