string TcpConnect(string message, string hostNameOrAddress, string port)
{
Cursor.Current = Cursors.WaitCursor;
Cursor.Show();
bool IsNumber = true;
foreach (char c in port)
{
IsNumber = Char.IsNumber(c);
if (!IsNumber)
break;
}
if (!IsNumber)
{
Cursor.Current = Cursors.Default;
Cursor.Hide();
return "S";
}
//throw new ArgumentException("Port must be \"Number\"!!");
Encoding encode = Encoding.ASCII;
TcpClient client = new TcpClient(AddressFamily.InterNetwork);
client.Client.Poll(2000, SelectMode.SelectError);
client.Client.Poll(2000, SelectMode.SelectRead);
client.Client.Poll(2000, SelectMode.SelectWrite);
NetworkStream stream = null;
ArrayList buffer = null;
Char splitchar = '^';
try
{
IPEndPoint point = new IPEndPoint(Dns.GetHostEntry(hostNameOrAddress).AddressList[0], int.Parse(port));
client.Connect(point);
stream = client.GetStream();
string sentdata = String.Format("{1}{0}{2}", splitchar.ToString(), message.Length, message);
buffer = new ArrayList(encode.GetBytes(sentdata));
stream.WriteByte(1);
stream.Write((byte[])buffer.ToArray(typeof(System.Byte)), 0, buffer.Count);
stream.WriteByte(2);
int iTimeOut = 2000;
while (client.Client.Available == 0 && !stream.DataAvailable)
{
if (iTimeOut == 0)
break;
Thread.Sleep(1);
iTimeOut--;
}
buffer.Clear();
int i = stream.ReadByte();
while (i > -1)
{
if (i == 1)
buffer.Clear();
else if (i == 2)
break;
else
buffer.Add((byte)i);
i = stream.ReadByte();
}
}
catch (SocketException)
{
if (errCount == 3)
{
//SharedMethod.NextAddr = !SharedMethod.NextAddr;
errCount = 1;
}
else
{
errCount++;
}
Cursor.Current = Cursors.Default;
Cursor.Hide();
return "S";
}
catch (Exception)
{
Cursor.Current = Cursors.Default;
Cursor.Hide();
return "G";
}
finally
{
if (stream != null)
stream.Close();
if (client != null)
client.Close();
}
if (buffer != null && buffer.Count > 0)
{
byte[] rbyte = (byte[])buffer.ToArray(typeof(System.Byte));
string result = encode.GetString(rbyte, 0, rbyte.Length);
if (String.IsNullOrEmpty(result) || result.IndexOf(splitchar) < 0)
{
Cursor.Current = Cursors.Default;
Cursor.Hide();
return "R";
//throw new InvalidOperationException("Receive data struct incurrect!!...");
}
else
{
string slength = result.Substring(0, result.IndexOf(splitchar));
int datalength = 0;
try
{
datalength = int.Parse(slength);
}
catch
{
Cursor.Current = Cursors.Default;
Cursor.Hide();
return "R";
//throw new InvalidOperationException("LEN must be \"Number\"!!");
}
if (datalength == result.Length - slength.Length - 1)
{
Cursor.Current = Cursors.Default;
Cursor.Hide();
return result.Substring(slength.Length + 1);
}
else
{
Cursor.Current = Cursors.Default;
Cursor.Hide();
return "R";
}
//throw new InvalidOperationException("Data lost!!");
}
}
else
{
Cursor.Current = Cursors.Default;
Cursor.Hide();
return "G";
}
}
2013年11月28日 星期四
2013年11月27日 星期三
[Java] public/private/protected
在說明這四個關鍵字之前,我想就class之間的關係做一個簡單的定義,對於繼承自己的class,base class可以認為他們都是自己的子女,而對於和自己一個目錄下的classes,認為都是自己的朋友。
1、public:public表明該數據成員、成員函數是對所有用戶開放,所有用戶都可以直接進行調用
2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有財產神聖不可侵犯嘛,即便是子女,朋友,都不可以使用。
3、protected:protected對於子女、朋友來說,就是public的,可以自由使用,沒有任何限制,而對於其他的外部class,protected就變成private。
作用域 當前類 同一package 子孫類 其他package
public V V V V
protected V V V X
friendly V V X X
private V X X X
不寫時默認為friendly
1、public:public表明該數據成員、成員函數是對所有用戶開放,所有用戶都可以直接進行調用
2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有財產神聖不可侵犯嘛,即便是子女,朋友,都不可以使用。
3、protected:protected對於子女、朋友來說,就是public的,可以自由使用,沒有任何限制,而對於其他的外部class,protected就變成private。
作用域 當前類 同一package 子孫類 其他package
public V V V V
protected V V V X
friendly V V X X
private V X X X
不寫時默認為friendly
[C#] String.format 輸出格式
//數字字串不足,前面補0
Response.Write(String.Format("{0:00000}", 123)); // 輸出 00123
Response.Write(String.Format("{0:D5}", 123)); // 輸出 00123
//數字字串不足,前後都補0
Response.Write(String.Format("{0:00000.0000}", 123.45)); // 輸出 00125.4500
//每3位數加逗號
Response.Write(String.Format("{0:0,0}", 0)); // 輸出 00
Response.Write(String.Format("{0:0,0}", 1234567)); // 輸出 1,234,567 //缺點:當數字=0時,會顯示 00
Response.Write(String.Format("{0:N}", 1234567)); // 輸出 1,234,567.00
Response.Write(String.Format("{0:N0}", 1234567)); // 輸出 1,234,567
Response.Write(String.Format("{0:N4}", 1234567)); // 輸出 1,234,567.0000
//電話號碼
Response.Write(String.Format("{0:(###) ####-####}", 88012345678)); // 輸出(880)1234-5678
//金額表示方式
Response.Write(String.Format("{0:C}", 0)); // 輸出 NT$0.00
Response.Write(String.Format("{0:C}", 12345)); // 輸出 NT$12,345.00
Response.Write(String.Format("{0:$#,##0.00;($#,##0.00);Zero}", 0)); // 輸出 Zero
Response.Write(String.Format("{0:$#,##0.00;($#,##0.00);Zero}", 1234.50)); // 輸出 $1,234.50
//百分比
Response.Write(String.Format("{0:0%}", 17 / (float)60)); // 輸出 28%
//到小數2位的百分比
Response.Write(String.Format("{0:0.00%}", 17 / (float)60)); // 輸出 28.33%
//取小數第4位,並對第5位做四捨五入
Response.Write(String.Format("{0:#,0.####}", 1234.56789)); // 1,234.5679
//小數點不足4位不補0
Response.Write(String.Format("{0:0.####}", 1234.567)); // 1234.567
Response.Write(String.Format("{0:00000}", 123)); // 輸出 00123
Response.Write(String.Format("{0:D5}", 123)); // 輸出 00123
//數字字串不足,前後都補0
Response.Write(String.Format("{0:00000.0000}", 123.45)); // 輸出 00125.4500
//每3位數加逗號
Response.Write(String.Format("{0:0,0}", 0)); // 輸出 00
Response.Write(String.Format("{0:0,0}", 1234567)); // 輸出 1,234,567 //缺點:當數字=0時,會顯示 00
Response.Write(String.Format("{0:N}", 1234567)); // 輸出 1,234,567.00
Response.Write(String.Format("{0:N0}", 1234567)); // 輸出 1,234,567
Response.Write(String.Format("{0:N4}", 1234567)); // 輸出 1,234,567.0000
//電話號碼
Response.Write(String.Format("{0:(###) ####-####}", 88012345678)); // 輸出(880)1234-5678
//金額表示方式
Response.Write(String.Format("{0:C}", 0)); // 輸出 NT$0.00
Response.Write(String.Format("{0:C}", 12345)); // 輸出 NT$12,345.00
Response.Write(String.Format("{0:$#,##0.00;($#,##0.00);Zero}", 0)); // 輸出 Zero
Response.Write(String.Format("{0:$#,##0.00;($#,##0.00);Zero}", 1234.50)); // 輸出 $1,234.50
//百分比
Response.Write(String.Format("{0:0%}", 17 / (float)60)); // 輸出 28%
//到小數2位的百分比
Response.Write(String.Format("{0:0.00%}", 17 / (float)60)); // 輸出 28.33%
//取小數第4位,並對第5位做四捨五入
Response.Write(String.Format("{0:#,0.####}", 1234.56789)); // 1,234.5679
//小數點不足4位不補0
Response.Write(String.Format("{0:0.####}", 1234.567)); // 1234.567
2013年11月26日 星期二
[.Net][C#] DateTime 格式
在cs裡面:
DateTime dt = DateTime.Now;
TextBox_Date.Text = dt.ToString("yyyy/MM/dd"); // 2013/11/27
在aspx裡面:
<%-- 假設資料表有欄位名稱Date並且是DateTime型態 --%>
<asp:Label ID="DateLabel" runat="server" Text='<%# Eval("Date","{0:yyyy/MM/dd}") %>' />
DateTime dt = DateTime.Now;
TextBox_Date.Text = dt.ToString("yyyy/MM/dd"); // 2013/11/27
在aspx裡面:
<%-- 假設資料表有欄位名稱Date並且是DateTime型態 --%>
<asp:Label ID="DateLabel" runat="server" Text='<%# Eval("Date","{0:yyyy/MM/dd}") %>' />
[SQL] INNER JOIN
SELECT
B.UserName, A.Type
FROM
資料表名稱1 AS A
INNER JOIN
資料表名稱2 AS B
ON
A.UserNo = B.UserNo;
利用兩個資料表皆有的欄位UserNo來連結。
訂閱:
文章 (Atom)