private void Tcp_Sendbtn_Click(object sender, System.EventArgs e) { if (bConnected) { try { lock (this) { byte[] s = { }; s = Program.Data_Tcp.DataSend_Tcp.ToArray(); if (DataPackingFlag_Tcp) { int slen = s.Length; string stemp = ""; for (int i = 1; i <= slen; i++) { if (s[i - 1] < 0x10) { stemp += "0"; } stemp += Convert.ToString(s[i - 1], 16) + " "; } RecvRichTextBox.Text = "Send : " + stemp + "\n" + RecvRichTextBox.Text; socket.Send(s); /* Timer Start*/ Recv_Timer.Stop(); Recv_Timer.Interval = Convert.ToInt32(Time_Out_Textbox.Text); Recv_Timer.Start(); Tcp_Sendbtn.Enabled = false; } } } catch { MessageBox.Show("Connect to " + myIPtextBox.Text + "failed !"); TcpInit(); Disconnect_Tcp(); } } }
public Socket socket = null; /* Socket通信 */ /* Name: AcceptMessage() * Function: A thread especially for Accept Tcp Message * Used a timer for timeout * Return: void */ public void AcceptMessage() { while (bConnected) { try { string sTemp = ""; byte[] DataRecv = new byte[1024]; int result = socket.Receive(DataRecv); /* Waitting for the Data until it comes */ Recv_Timer.Stop(); /* If time <= 1000 , Timer stops */ for (int i = 0; i < result; i++) /* 将接收到的byte数据存储到byte数组,并赋与sTemp*/ { if (DataRecv[i] < 0x10) { sTemp += "0"; } sTemp += Convert.ToString(DataRecv[i], 16) + " "; } RecvRichTextBox.Text = "Recv : " + sTemp + "\n" + RecvRichTextBox.Text; Program.Data_Tcp.DataRecv_Tcp = new List <byte> { }; for (int i = 0; i < result; i++) { Program.Data_Tcp.DataRecv_Tcp.Add(DataRecv[i]); } DataAnalyze_Tcp(); } catch { MessageBox.Show("Disconnected !"); TcpInit(); } } }
private void Recv_Timer_Tick(object sender, EventArgs e) { RecvRichTextBox.Text = "Recv : Error,Receive time Out ! " + "\n" + RecvRichTextBox.Text; Recv_Timer.Stop(); Recv_Timer.Interval = Convert.ToInt32(Time_Out_Textbox.Text); }