?? 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 + -