wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12616|回復: 18
收起左側

c#寫的tcp/ip服務端與客戶端源碼和資料下載

  [復制鏈接]
ID:319065 發表于 2018-6-14 20:49 | 顯示全部樓層 |閱讀模式
服務端運行界面:
0.png
客戶端云心界面:
0.png

0.png 0.png

全部資料51hei下載地址:
2、TCP_IP.rar (5.74 MB, 下載次數: 358)


源碼預覽:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;

  9. //添加的引用
  10. using System.Net;
  11. using System.Net.Sockets;
  12. using System.Threading;
  13. using System.IO;
  14. using System.Threading.Tasks;
  15. using System.Collections;

  16. namespace TCP_IP
  17. {
  18.     public partial class Form1 : Form
  19.     {
  20.         //socket
  21.         /*public Socket newclient;//新建socket連接口
  22.         public bool Connected;
  23.         public Thread myThread;
  24.         public delegate void MyInvoke(string str);
  25.         public IPEndPoint myIe;
  26.         public IPAddress myIp;
  27.         public int myPort;*/
  28.         public delegate void MyInvoke(string str);
  29.         MyTcpServer cMyTcpServer = new MyTcpServer();

  30.         MySession cMySession = new MySession();// { TcpSocket = cMyTcpServer.GetType() };
  31.         //send or receive
  32.         public byte[] myBy;//傳遞串口接收到的數據
  33.         public int myByLenth = 0;//串口接收到的數據長度
  34.         public string myStr;//串口接收的字符串
  35.         public bool receiveDtatFlag = false;

  36.         public bool myCloseForm = false;//防止窗口關閉時線程沒有關閉占用資源

  37.         public bool myThreadStop = true;
  38.         public int send_count = 0;
  39.         public int recv_count = 0;

  40.         public Form1()
  41.         {
  42.             InitializeComponent();
  43.         }
  44.         #region 窗體處理
  45.         private void Form1_Load(object sender, EventArgs e)//頁面加載
  46.         {
  47.             myCloseForm = false;
  48.             //checkBox1.Checked = true;
  49.             checkBox2.Checked = true;
  50.             checkBox3.Checked = true;
  51.             //checkBox4.Checked = true;
  52.             button1.Visible = false;

  53.             Thread myThread = new Thread(ReceiveMsg);//創建新線程
  54.             myThread.IsBackground = true;//線程后臺運行
  55.             myThread.Start();//啟動線程
  56.         }

  57.         private void Form1_FormClosing(object sender, FormClosingEventArgs e)//退出窗口處理
  58.         {
  59.             if (DialogResult.Yes == MessageBox.Show("程序正在使用中,確認退出?", "確認退出", MessageBoxButtons.YesNo))
  60.             {
  61.                 myCloseForm = true;
  62.                 this.Dispose();
  63.                 System.Environment.Exit(System.Environment.ExitCode);
  64.                 this.Close();
  65.                 e.Cancel = false;
  66.             }
  67.             else
  68.             {
  69.                 e.Cancel = true;
  70.             }
  71.         }

  72.         private void button1_Click(object sender, EventArgs e)//隱藏該窗口
  73.         {
  74.             this.Hide();
  75.         }
  76.         #endregion

  77.         #region 連接按鈕處理
  78.         public void myConnect()//開啟連接
  79.         {
  80.             //byte[] data = new byte[1024];
  81.             if (btnConnect.Text.Trim() == "啟動偵聽")
  82.             {
  83.                 btnConnect.Text = "斷開連接";
  84.                 this.pictureBox1.Image = Image.FromFile(Application.StartupPath + "\\green.png");//bin文件中
  85.                 txbServerIP.Enabled = false;
  86.                 txbServerPort.Enabled = false;
  87.                 cMyTcpServer.OpenServer(Convert.ToInt32(txbServerPort.Text.Trim()));               
  88.             }
  89.             else
  90.             {
  91.                 btnConnect.Text = "啟動偵聽";
  92.                 this.pictureBox1.Image = Image.FromFile(Application.StartupPath + "\\red.png");//bin文件中
  93.                 txbServerIP.Enabled = true;
  94.                 txbServerPort.Enabled = true;
  95.                 cMyTcpServer.CloseServer();
  96.             }

  97.             /*if (Connected == false)//沒有連接
  98.             {
  99.                 newclient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  100.                 myIp = IPAddress.Parse(txbServerIP.Text.Trim());
  101.                 myPort = Convert.ToInt32(txbServerPort.Text.Trim());
  102.                 myIe = new IPEndPoint(myIp, myPort);

  103.                 try
  104.                 {
  105.                     newclient.Connect(myIe);
  106.                     //btnConnect.Enabled = false;
  107.                     Connected = true;
  108.                     btnConnect.Text = "斷開連接";
  109.                     myThreadStop = true;
  110.                     this.pictureBox1.Image = Image.FromFile(Application.StartupPath + "\\green.png");//bin文件中
  111.                     txbServerIP.Enabled = false;
  112.                     txbServerPort.Enabled = false;
  113.                 }
  114.                 catch (SocketException e)
  115.                 {
  116.                     Connected = false;
  117.                     btnConnect.Text = "連接服務器";
  118.                     myThreadStop = false;
  119.                      this.pictureBox1.Image = Image.FromFile(Application.StartupPath + "\\red.png");//bin文件中
  120.                     txbServerIP.Enabled = true;
  121.                     txbServerPort.Enabled = true;
  122.                     MessageBox.Show("連接服務器失敗  " + e.Message);
  123.                     return;
  124.                 }

  125.                 //多線程處理

  126.                 //ThreadStart myThreaddelegate = new ThreadStart(ReceiveMsg);
  127.                 //myThread = new Thread(myThreaddelegate);

  128.                 Thread myThread = new Thread(ReceiveMsg);//創建新線程
  129.                 myThread.IsBackground = true;//線程后臺運行
  130.                 myThread.Start();//啟動線程
  131.             }
  132.             else
  133.             {
  134.                 Connected = false;
  135.                 btnConnect.Text = "連接服務器";
  136.                 this.pictureBox1.Image = Image.FromFile(Application.StartupPath + "\\red.png");//bin文件中
  137.                 if (myThread != null)
  138.                 {
  139.                     myThread.Abort();
  140.                     //Application.ExitThread();
  141.                 }
  142.                 myThreadStop = false;
  143.                 newclient.Disconnect(false);
  144.                 txbServerIP.Enabled = true;
  145.                 txbServerPort.Enabled = true;
  146.             }*/

  147.         }

  148.         private void btnConnect_Click(object sender, EventArgs e)//開啟連接
  149.         {
  150.             myConnect();
  151.         }
  152.         #endregion


  153.         ///////////////////數據多線程處理部分//////20170919////////////////////////////     
  154.         #region 真正使用的接收線程處理部分
  155.         public void ReceiveMsg()//接收處理線程部分
  156.         {
  157.             while (myThreadStop)
  158.             {
  159.                 string myRecvStrTemp = "";
  160.                 #region
  161.                 lock (cMyTcpServer.dic_ClientSocket)
  162.                 {
  163.                     foreach (var item in cMyTcpServer.dic_ClientSocket)
  164.                     {
  165.                         //cMySession = item.Value;//兩種方法都可以
  166.                         if (cMyTcpServer.dic_ClientSocket.TryGetValue(item.Key.ToString(), out cMySession) == true)
  167.                         {
  168.                             byte[] myReceByte = cMySession.GetBuffer(0,cMySession.m_Buffer.Count);//提取接收數據

  169.                             //數據處理
  170.                             if (myReceByte.Length > 0)
  171.                             {
  172.                                 StringBuilder builder = new StringBuilder();//避免在事件處理方法中反復的創建,定義到外面。
  173.                                 long received_count = 0;//接收計數                    
  174.                                 received_count += myReceByte.Length;//增加接收計數
  175.                                 builder.Clear();//清除字符串構造器的內容

  176.                                 myBy = myReceByte;
  177.                                 myByLenth = myReceByte.Length;
  178.                                 if (checkBox3.Checked)//接收時間顯示
  179.                                 {
  180.                                     if (chbRecvIpPort.Checked)//接收IP和端口顯示
  181.                                     {
  182.                                         myRecvStrTemp += DateTime.Now.ToString("yyyy-MM-dd") + " " + DateTime.Now.ToString(@"HH\:mm\:ss\:fff") + " " + cMySession.GetIp() + "\n";
  183.                                     }
  184.                                     else
  185.                                     {
  186.                                         myRecvStrTemp += DateTime.Now.ToString("yyyy-MM-dd") + " " + DateTime.Now.ToString(@"HH\:mm\:ss\:fff") + "\n";
  187.                                     }

  188.                                 }
  189.                                 else
  190.                                 {
  191.                                     if (chbRecvIpPort.Checked)//接收IP和端口顯示
  192.                                     {
  193.                                         myRecvStrTemp += cMySession.GetIp() + "\n";
  194.                                     }
  195.                                 }
  196.                                 //判斷是否是顯示為16禁止
  197.                                 if (checkBox1.Checked)
  198.                                 {
  199.                                     //依次的拼接出16進制字符串
  200.                                     foreach (byte b in myReceByte)
  201.                                     {
  202.                                         builder.Append(b.ToString("X2") + " ");//在此實例的結尾追加指定字符串的副本
  203.                                     }
  204.                                 }
  205.                                 else
  206.                                 {
  207.                                     //直接按ASCII規則轉換成字符串
  208.                                     builder.Append(Encoding.ASCII.GetString(myReceByte));
  209.                                 }
  210.                                 //追加的形式添加到文本框末端,并滾動到最后。
  211.                                 myRecvStrTemp += builder.ToString();
  212.                                 myStr = builder.ToString();//字符串輸出

  213.                                 if (checkBox2.Checked)//接收換行顯示
  214.                                 {
  215.                                     myRecvStrTemp += "\n";
  216.                                 }
  217.                                 try
  218.                                 {
  219.                                     if (receiveDtatFlag == true)//保存數據
  220.                                     {
  221.                                         string fName = saveFileDialog1.FileName;
  222.                                         FileStream fs = File.Open(fName, FileMode.Append);
  223.                                         StreamWriter sw = new StreamWriter(fs);

  224.                                         if (checkBox3.Checked)//接收時間顯示
  225.                                         {
  226.                                             sw.Write(DateTime.Now.ToString("yyyy-MM-dd") + " ");
  227.                                             sw.Write(DateTime.Now.ToString(@"HH\:mm\:ss\:fff") + "\n");
  228.                                         }
  229.                                         sw.Write(builder.ToString());
  230.                                         if (checkBox2.Checked)//接收換行顯示
  231.                                         {
  232.                                             sw.WriteLine("\n");

  233.                                         }
  234.                                         sw.Close();
  235.                                         fs.Close();
  236.                                     }
  237.                                 }
  238.                                 catch
  239.                                 {

  240.                                 }
  241.                                 recv_count += myReceByte.Length;//增加接收計數
  242.                             }                           
  243.                         }
  244.                         //cMySession = item.Value;//兩種方法都可以

  245.                     }
  246.                 }
  247.                 #endregion
  248.                 showMsg(myRecvStrTemp);
  249.             }
  250.         }
  251.         public void showMsg(string msg)//接收顯示處理部分
  252.         {
  253.             {
  254.                 //在線程里以安全方式調用控件
  255.                 if ((rtbReceiveMsg.InvokeRequired) || (txbRecvCount.InvokeRequired))
  256.                 {
  257.                     MyInvoke _myinvoke = new MyInvoke(showMsg);
  258.                     rtbReceiveMsg.Invoke(_myinvoke, new object[] { msg });
  259.                 }
  260.                 else
  261.                 {
  262.                     rtbReceiveMsg.AppendText(msg);//顯示部分
  263.                     txbRecvCount.Text = recv_count.ToString();
  264.                 }
  265.             }
  266.         }//*/

  267.         private void rtbReceiveMsg_TextChanged(object sender, EventArgs e)//接收窗處理
  268.         {
  269.             if (rtbReceiveMsg.Lines.Length > 8000)//大于8000行時清楚前面的
  270.             {
  271.                 int n = 500;
  272.                 int start = rtbReceiveMsg.GetFirstCharIndexFromLine(0);//第一行第一個字符索引
  273.                 int end = rtbReceiveMsg.GetFirstCharIndexFromLine(n);//第n行第一個字符索引
  274.                 rtbReceiveMsg.Select(start, end);//選中n行
  275.                 rtbReceiveMsg.SelectedText = "";//設置前n行為空

  276.             }
  277.             rtbReceiveMsg.Focus();
  278.             rtbReceiveMsg.Select(rtbReceiveMsg.TextLength, 0);
  279.         }

  280.         private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)//清除接收窗數據
  281.         {
  282.             rtbReceiveMsg.Text = "";
  283.             send_count = 0;
  284.             textBox4.Text = "";
  285.             txbRecvCount.Text = "";
  286.         }
  287.         #endregion              

  288.         #region 數據發送處理
  289.         private void btnMySendMessage_Click(object sender, EventArgs e)//發送數據
  290.         {
  291.             try
  292.             {
  293.                 if (checkBox5.Checked == true)
  294.                 {
  295.                     timer1.Enabled = true;
  296.                 }
  297.                 else
  298.                 {
  299.                     timer1.Enabled = false;
  300.                 }
  301.                 //string s = "";                    
  302.                 if (checkBox4.Checked)//十六進制發送
  303.                 {
  304.                     ArrayList al = cMyMathClass.Str16ToArrayList(rtbMySendMessage.Text);
  305.                     byte[] by = new byte[al.Count];
  306.                     int i = 0;
  307.                     foreach (string stmp in al)
  308.                     {
  309.                         by[i] += Convert.ToByte(stmp, 16);//將指定基的數字的字符串表示形式轉換為等效的 8 位無符號整數。
  310.                         i++;
  311.                     }
  312.                     //int mySendLenth = newclient.Send(by);
  313.                     lock (cMyTcpServer.dic_ClientSocket)
  314.                     {
  315.                         foreach (var item in cMyTcpServer.dic_ClientSocket)
  316.                         {
  317.                             cMyTcpServer.SendData(item.Key.ToString(), by);
  318.                         }
  319.                     }
  320.                     //serialPort1.Write(by, 0, i);//發送字節
  321.                     //s = Encoding.GetEncoding("Gb2312").GetString(by);//在派生類中重寫時,將指定字節數組中的所有字節解碼為一個字符串。。
  322.                 }
  323.                 else//ASCII發送
  324.                 {
  325.                     int m_length = rtbMySendMessage.Text.Trim().Length;
  326.                     byte[] data = new byte[m_length];
  327.                     data = Encoding.UTF8.GetBytes(rtbMySendMessage.Text);
  328.                     lock (cMyTcpServer.dic_ClientSocket)
  329.                     {
  330.                         foreach (var item in cMyTcpServer.dic_ClientSocket)
  331.                         {
  332.                             cMyTcpServer.SendData(item.Key.ToString(), data);
  333.                         }
  334.                     }
  335.                     //int mySendLenth = newclient.Send(data);

  336.                 }
  337.                 send_count++;
  338.             }
  339.             catch (Exception)
  340.             {
  341.                 MessageBox.Show("發送數據時發生錯誤!", "錯誤提示");
  342.             }            
  343.         }

  344.         private void timer1_Tick(object sender, EventArgs e)//定時發送
  345.         {
  346.             timer1.Interval = Convert.ToInt32(textBox1.Text);
  347.             try
  348.             {
  349.                 if (checkBox5.Checked == true)
  350.                 {                  
  351.                     if (checkBox4.Checked)//十六進制發送
  352.                     {
  353.                         ArrayList al = cMyMathClass.Str16ToArrayList(rtbMySendMessage.Text);
  354.                         byte[] by = new byte[al.Count];
  355.                         int i = 0;
  356.                         foreach (string stmp in al)
  357.                         {
  358.                             by[i] += Convert.ToByte(stmp, 16);//將指定基的數字的字符串表示形式轉換為等效的 8 位無符號整數。
  359.                             i++;
  360.                         }
  361.                         //int mySendLenth = newclient.Send(by);
  362.                         lock (cMyTcpServer.dic_ClientSocket)
  363.                         {
  364.                             foreach (var item in cMyTcpServer.dic_ClientSocket)
  365.                             {
  366.                                 cMyTcpServer.SendData(item.Key.ToString(), by);
  367.                             }
  368.                         }
  369.                         //serialPort1.Write(by, 0, i);//發送字節
  370.                         //s = Encoding.GetEncoding("Gb2312").GetString(by);//在派生類中重寫時,將指定字節數組中的所有字節解碼為一個字符串。。
  371.                     }
  372.                     else//ASCII發送
  373.                     {
  374.                         int m_length = rtbMySendMessage.Text.Trim().Length;
  375.                         byte[] data = new byte[m_length];
  376.                         data = Encoding.UTF8.GetBytes(rtbMySendMessage.Text);
  377.                         lock (cMyTcpServer.dic_ClientSocket)
  378.                         {
  379.                             foreach (var item in cMyTcpServer.dic_ClientSocket)
  380.                             {
  381.                                 cMyTcpServer.SendData(item.Key.ToString(), data);
  382.                             }
  383.                         }
  384.                         //int mySendLenth = newclient.Send(data);

  385.                     }
  386.                     send_count++;
  387.                 }
  388.             }
  389.             catch (Exception)
  390.             {
  391.                 MessageBox.Show("發送數據時發生錯誤!", "錯誤提示");
  392.             }            
  393.         }

  394.         private void checkBox5_CheckedChanged(object sender, EventArgs e)//自動發送區處理
  395.         {
  396.             if (checkBox4.CheckState == CheckState.Checked)//發送HEX顯示
  397.             {

  398.             }
  399.             else//發送ASCII顯示
  400.             {
  401.                 timer1.Enabled = false;
  402.             }
  403.         }

  404.         private void checkBox4_CheckedChanged(object sender, EventArgs e)//發送HEX區處理
  405.         {
  406.             string s = "";
  407.             if (checkBox4.CheckState == CheckState.Checked)//發送HEX顯示
  408.             {
  409.                 byte[] by = Encoding.GetEncoding("Gb2312").GetBytes(rtbMySendMessage.Text);
  410.                 rtbMySendMessage.Text = "";
  411.                 foreach (byte btmp in by)
  412.                 {
  413.                     s = "00" + string.Format("{0:X}", btmp);
  414.                     rtbMySendMessage.Text += s.Substring(s.Length - 2, 2);
  415.                     rtbMySendMessage.Text += " ";
  416.                 }
  417.             }
  418.             else//發送ASCII顯示
  419.             {
  420.                 ArrayList al = cMyMathClass.Str16ToArrayList(rtbMySendMessage.Text);
  421.                 byte[] by = new byte[al.Count];
  422.                 int i = 0;
  423.                 foreach (string stmp in al)
  424.                 {
  425.                     by[i] += Convert.ToByte(stmp, 16);
  426.                     i++;
  427.                 }
  428.                 rtbMySendMessage.Text = Encoding.GetEncoding("Gb2312").GetString(by);
  429.             }
  430.         }


  431.         #endregion

  432.         #region 數據保存處理
  433.         private void checkBox6_CheckedChanged(object sender, EventArgs e)//保存勾選
  434.         {
  435.             if (checkBox6.CheckState == CheckState.Checked)//選中
  436.             {
  437.                 receiveDtatFlag = true;
  438.             }
  439.             else
  440.             {
  441.                 receiveDtatFlag = false;
  442.             }


  443.         }

  444.         private void button4_Click(object sender, EventArgs e)//保存按鈕
  445.         {

  446.             saveFileDialog1.Filter = "文本文件(*.txt)|*.txt";
  447.             saveFileDialog1.FilterIndex = 1;
  448.             saveFileDialog1.FileName = "ReceiveData";
  449.             if (saveFileDialog1.ShowDialog() == DialogResult.OK)
  450.             {
  451.                 string fName = saveFileDialog1.FileName;
  452.                 FileStream fs = File.Open(fName, FileMode.Append);
  453.                 StreamWriter sw = new StreamWriter(fs);
  454.                 //sw.WriteLine(richTextBox1.Text);
  455.                 textBox3.Text = fName;
  456.                 sw.Close();
  457.                 fs.Close();
  458.             }
  459.         }
  460.         #endregion            

  461.         ////////////////////外部調用接口///////////////
  462.         #region 外部調用的發送接口
  463.         public void mySendDataHandle(string mySendDataIn)
  464.         {
  465.             try
  466.             {
  467.                 if (checkBox4.Checked)//十六進制發送
  468.                 {
  469.                     ArrayList al = cMyMathClass.Str16ToArrayList(rtbMySendMessage.Text);
  470.                     byte[] by = new byte[al.Count];
  471.                     int i = 0;
  472.                     foreach (string stmp in al)
  473.                     {
  474.                         by[i] += Convert.ToByte(stmp, 16);//將指定基的數字的字符串表示形式轉換為等效的 8 位無符號整數。
  475.                         i++;
  476.                     }
  477.                     //int mySendLenth = newclient.Send(by);
  478.                     lock (cMyTcpServer.dic_ClientSocket)
  479.                     {
  480.                         foreach (var item in cMyTcpServer.dic_ClientSocket)
  481.                         {
  482.                             cMyTcpServer.SendData(item.Key.ToString(), by);
  483.                         }
  484.                     }
  485.                     //serialPort1.Write(by, 0, i);//發送字節
  486.                     //s = Encoding.GetEncoding("Gb2312").GetString(by);//在派生類中重寫時,將指定字節數組中的所有字節解碼為一個字符串。。
  487.                 }
  488.                 else//ASCII發送
  489.                 {
  490.                     int m_length = rtbMySendMessage.Text.Trim().Length;
  491.                     byte[] data = new byte[m_length];
  492.                     data = Encoding.UTF8.GetBytes(rtbMySendMessage.Text);
  493.                     lock (cMyTcpServer.dic_ClientSocket)
  494.                     {
  495.                         foreach (var item in cMyTcpServer.dic_ClientSocket)
  496.                         {
  497.                             cMyTcpServer.SendData(item.Key.ToString(), data);
  498.                         }
  499.                     }
  500.                     //int mySendLenth = newclient.Send(data);

  501.                 }
  502.                 send_count++;

  503.             }
  504.             catch (Exception)
  505.             {
  506.                 MessageBox.Show("發送數據時發生錯誤!", "錯誤提示");
  507.             }
  508.         }//*/
  509.         #endregion
  510.     }
  511. }
復制代碼


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:390264 發表于 2018-9-13 13:04 | 顯示全部樓層
太需要了    謝謝分享
回復

使用道具 舉報

ID:73991 發表于 2018-9-17 15:58 | 顯示全部樓層
厲害,沒想到在這找到了。。。。CDSN下載都是要積分,這里好多了
回復

使用道具 舉報

ID:462523 發表于 2019-1-5 16:04 | 顯示全部樓層
感謝分享,需要這樣的精神,謝謝
回復

使用道具 舉報

5#
無效樓層,該帖已經被刪除
ID:468315 發表于 2019-1-16 13:16 | 顯示全部樓層
感謝分享,已經下載了,正在學習中,最近剛好手頭上要做一個硬件與服務器連接測試,走的也是TCP協議的,太實用了
回復

使用道具 舉報

ID:48097 發表于 2019-3-4 14:10 | 顯示全部樓層
學習一下
回復

使用道具 舉報

ID:332109 發表于 2019-6-3 14:37 | 顯示全部樓層
感謝分享,已經下載了~~
回復

使用道具 舉報

ID:565614 發表于 2019-6-18 13:10 | 顯示全部樓層
沒有積分能發一份給我嗎/?新手學習中
回復

使用道具 舉報

ID:350791 發表于 2019-8-27 09:54 | 顯示全部樓層
正在學習TCP協議,內容很好
回復

使用道具 舉報

ID:609989 發表于 2019-9-10 17:00 | 顯示全部樓層
666謝謝啊
回復

使用道具 舉報

ID:625667 發表于 2019-10-24 17:20 | 顯示全部樓層
樓主好人,謝謝分享
回復

使用道具 舉報

ID:625667 發表于 2019-10-24 17:21 | 顯示全部樓層
不過話說回來了,C#社區開源確實跟Java沒法比,找個稍微有用的就是買,GitHub也沒有,哎
回復

使用道具 舉報

ID:384552 發表于 2019-10-31 15:59 | 顯示全部樓層
太厲害的,謝謝
回復

使用道具 舉報

ID:663815 發表于 2019-12-14 15:44 | 顯示全部樓層
厲害,找了很久!!
回復

使用道具 舉報

ID:544352 發表于 2020-1-4 13:50 | 顯示全部樓層
源碼規范合理,該有的都有了
回復

使用道具 舉報

ID:711047 發表于 2020-3-18 17:51 | 顯示全部樓層
這個太棒了,謝謝樓主
回復

使用道具 舉報

18#
無效樓層,該帖已經被刪除
19#
無效樓層,該帖已經被刪除
ID:967451 發表于 2021-9-22 10:46 | 顯示全部樓層
這個太棒了,謝謝樓主
回復

使用道具 舉報

21#
無效樓層,該帖已經被刪除
ID:1003226 發表于 2022-2-23 12:26 | 顯示全部樓層
CDSN下載都是要積分,這里好多了
回復

使用道具 舉報

23#
無效樓層,該帖已經被刪除
24#
無效樓層,該帖已經被刪除
ID:20672 發表于 2025-6-12 14:49 | 顯示全部樓層
謝謝分享。tcp的還沒開發過。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
欧美巨大黑人极品精男| 一区二区视频播放| aaa黄色大片| 自拍偷拍一区二区三区四区| 欧美精品一区免费| 91av资源网| 国产自偷自偷免费一区| 亚洲精品乱码久久久久久自慰| 亚洲人成无码网站久久99热国产| 99久久久精品视频| 免费人成在线观看视频播放| 欧美午夜小视频| 久久成人免费观看| 一级片视频免费观看| 在线a免费观看| 免费观看一区二区三区| 九色蝌蚪在线视频| 日本高清视频网站| 午夜影院在线看| www.超碰97| 9l视频白拍9色9l视频| 天堂影院在线| 1024视频在线| 国产高清自产拍av在线| 国产毛片精品久久| 视频国产精品| 成人中文在线| 在线精品一区| 久草中文综合在线| 久久久久久久久久久电影| 专区另类欧美日韩| 在线一区二区观看| 亚洲а∨天堂久久精品9966| 这里只有视频精品| 午夜精品国产精品大乳美女| 国产精品欧美一区二区| 国产91色在线|亚洲| 日韩精品久久久免费观看| 免费网站在线观看视频| 天天爽天天爽夜夜爽| 中文字幕在线视频播放| 五月天色婷婷丁香| 特黄视频免费看| 亚洲av无码乱码国产精品| 欧美人与牲动交xxxx| jizzjizzjizzjizz| 日韩精品成人免费观看视频| 在线免费av片| 最近更新在线中文字幕一页| 黄网在线观看网址入口| 日韩资源在线| 国产在线精彩视频| 国内精品偷拍| 亚洲高清在线| 成人avav影音| 午夜av电影一区| 女人又爽又黄免费女仆| 大陆极品少妇内射aaaaa| 成人免费a级片| 青青青在线观看视频| 中国老女人av| 2025韩国大尺度电影| 亚洲人成77777| 伊人久久大香线蕉午夜av| 黄页免费在线观看| 久操视频在线| 99久久人爽人人添人人澡| 狠狠入ady亚洲精品| www.欧美色图| 欧美亚洲一区二区在线| 色噜噜国产精品视频一区二区| 国产精品丝袜一区二区三区| 免费观看国产视频在线| 久久久久亚洲av无码网站| 九九热国产视频| 新天堂中文资源官网在线观看| 爱草在线视频| 国产v日韩v欧美v| 精品产国自在拍| 韩国成人在线视频| 精品国产精品三级精品av网址| 精品丝袜一区二区三区| 91精品国产综合久久香蕉| 欧美国产综合在线| 天堂在线中文视频| 国产99久一区二区三区a片| www.狠狠色.com| 蜜桃成人365av| 欧美精品一区二区三区中文字幕| 国产精品伊人色| 91福利在线导航| 欧美精品少妇videofree| 免费毛片一区二区三区久久久| 久久久久xxxx| 久久久久久久久久成人| 全彩无遮挡全彩口工漫画h#| 污视频在线免费观看网站| 深爱激情综合网| 国产成人免费视频网站高清观看视频 | 日韩在线一区二区三区四区| 三级免费网站| 污污视频免费看| 免费国产在线观看| jizz久久精品永久免费| 麻豆一区二区三| 日韩欧美在线视频免费观看| 欧美福利视频在线观看| 亚洲不卡中文字幕| 90岁老太婆乱淫| 人妻精品一区二区三区| 四虎在线观看| 久久精品国产亚洲blacked| 秋霞电影一区二区| 欧美午夜视频在线观看| 欧美精品福利视频| 日本a在线天堂| 岛国毛片在线观看| 91看片官网| 国产高清不卡| 99热在线播放| 欧美一区二区视频在线| 日韩精品无码一区二区三区免费 | 日本久久一区二区| 国模gogo一区二区大胆私拍 | 欧美日韩看看2015永久免费 | 免费成人网www| 国产精品日本欧美一区二区三区| 床上的激情91.| 亚洲成人免费在线观看| 亚洲精品福利资源站| 国产做受高潮69| 欧美亚洲另类久久综合| 日韩大片一区二区| 成年人一级黄色片| 无码国产精品一区二区色情男同| 成人网18入口| аⅴ资源天堂资源库在线| 日韩美脚连裤袜丝袜在线| 日韩av在线免费观看不卡| 亚洲图片激情小说| 亚洲成色999久久网站| 国产999精品久久久影片官网| 亚洲欧洲精品在线 | 色综合电影网| 原创真实夫妻啪啪av| 成年人午夜视频| 国产一级免费看| а√天堂中文在线资源bt在线| 色999韩欧美国产综合俺来也| 亚洲女同一区| 国产日韩欧美综合在线| 精品乱人伦一区二区三区| 97理论电影| 六月婷婷综合| 国产成人精品一区二| 亚洲高清免费在线观看| 亚洲黄色一区二区| 免费看黄色的网站| caoporn视频在线观看| 91精品福利| 国产精品乱码人人做人人爱| 亚洲欧美福利视频| 精品国产乱码久久久久软件| 在线观看av免费观看| youjizz在线视频| 你懂的在线观看视频| 91九色在线播放| 激情欧美一区| 天天综合色天天| 青草成人免费视频| 日本精品一区在线观看| 你懂的国产视频| 51免费午夜啪啪| 青草综合视频| 国产精品一区二区男女羞羞无遮挡| 欧美亚洲精品一区| 国产日韩在线一区| 午夜激情视频网| 国产色片在线观看| 蜜桃成人在线视频| 欧美在线免费看视频| 国产精品久久久久一区| 久久这里只有精品99| 穿情趣内衣被c到高潮视频| 午夜国产小视频| 九九热视频免费在线观看| 国产国产一区| 成人自拍视频在线| 亚洲一区二区福利| 成年丰满熟妇午夜免费视频| 日韩高清免费av| 美女免费免费看网站| 老司机精品视频在线播放| 国产欧美日韩卡一| 欧美成人精品一区二区| 国产综合av在线| 国产精品美女一区| 午夜国产福利在线| 国产日韩欧美一区| 91精品在线免费观看| 久久亚洲综合网| 欧美成人三级视频| 韩国av电影免费观看| 日韩在线黄色| 亚洲夂夂婷婷色拍ww47 | 欧美伦理视频网站| 精品一区在线播放| 亚洲伦理一区二区三区| xfplay资源站色先锋在线观看| 中文字幕亚洲在线观看| 国产精品网站一区| 午夜精品一区二区三区av| 五月天激情视频在线观看| 国产成人手机在线| cao在线视频| 岛国精品在线观看| 欧美激情在线一区| 日本77777| 国产人成免费视频| www.爱久久| 亚洲国产一区视频| 成人av免费在线看| 欧美极品aaaaabbbbb| 国产美女极品在线| 91精品国产麻豆国产在线观看| 色婷婷久久久综合中文字幕 | 日韩精品一区三区| 久久精品蜜桃| 香蕉久久夜色精品国产| 亚洲精品xxx| 青青草视频在线免费播放| 亚洲第一视频在线| 日韩伦理在线| 91看片淫黄大片一级在线观看| 久久久久久91香蕉国产| 五月天丁香社区| 交videos老少配com| 精品一区亚洲| 欧美三级韩国三级日本一级| 日韩av免费电影| 91麻豆国产在线| 新版的欧美在线视频| 国产日韩综合av| 91沈先生在线观看| 黄色一级片在线免费观看| 牛牛影视精品影视| 极品销魂美女一区二区三区| 欧美噜噜久久久xxx| 亚洲精品乱码久久久久久动漫| 国产情侣高潮对白| 国产成人三级| 欧美一区二区人人喊爽| 色综合久久久久无码专区| 手机看片日韩| 亚洲第一二三区| 制服丝袜av成人在线看| 成人在线观看你懂的| 四虎影视免费看电影| 日韩高清在线免费观看| 欧美日本在线播放| 国产精品国产亚洲精品看不卡| 最近免费中文字幕在线第一页| 大伊香蕉精品在线品播放| 色94色欧美sute亚洲线路一久 | 亚洲精品喷潮一区二区三区| 成人在线免费av| 亚洲成人黄色影院| 中文字幕日韩精品一区二区| 亚洲av片在线观看| 神马久久av| 特级西西444www大精品视频免费看| 国内激情视频在线观看| 欧美色手机在线观看| 亚洲熟妇一区二区| 久久久99久久| 精品视频一区在线| 亚洲av无码一区二区三区dv| 亚州一区二区| 欧美精选午夜久久久乱码6080| 99热在线这里只有精品| 全免费a级毛片| 国产亚洲高清视频| 97精品在线视频| 日本少妇裸体做爰| 在线观看欧美日韩电影| 亚洲一区二区三区在线播放| 最近中文字幕免费mv| 国产一区亚洲二区| 激情欧美丁香| 欧美亚洲一区在线| 精品国产日韩欧美| 97碰碰碰免费色视频| 国产黄色片免费| 国产精品亚发布| 日本少妇高清视频| 中文字幕在线免费观看视频| 午夜日韩在线电影| 免费高清在线观看免费| av美女在线| 不卡av在线免费观看| 国产一区二区视频在线免费观看| 色婷婷在线视频| 外国成人免费视频| 久久久久久一区二区三区| 亚洲另类欧美日韩| 精品一区二区三区中文字幕| 精品成人在线观看| 粉嫩av懂色av蜜臀av分享| 天天在线视频色| 夜夜嗨av一区二区三区网页| 自拍日韩亚洲一区在线| 1pon在线| 99久久久国产精品免费蜜臀| 亚洲国产另类久久久精品极度| 久草在线视频精品| 久久亚洲色图| 999精品视频一区二区三区| 二区三区偷拍浴室洗澡视频| 欧美日韩第一区| 国产精品久久久久久久久影视 | 小早川怜子影音先锋在线观看| 欧美日韩一区二区在线观看| 亚洲欧美激情一区二区三区| 97电影在线观看| 亚洲国产综合色| 国产性生活一级片| 老司机福利在线视频| 色婷婷综合五月| 日本性生活一级片| 91精品国产黑色瑜伽裤| 欧美一区二区二区| 亚洲区自拍偷拍| 日本免费网址| 成人一区在线观看| 特色特色大片在线| 色黄视频在线| 一二三区精品福利视频| 在线免费看v片| 婷婷色在线资源| 88在线观看91蜜桃国自产| 91成人破解版| 不卡的国产精品| 综合欧美国产视频二区| 国产黄网在线观看| 亚洲人metart人体| 1区1区3区4区产品乱码芒果精品| 欧美另类videosbest视频| 国产一区二三区好的| 一卡二卡3卡四卡高清精品视频| 1069男同网址| 一区二区三区日韩欧美精品| 亚洲三级在线观看视频| 丁香花在线电影| 欧美成人精品二区三区99精品| 午夜69成人做爰视频| sihu成人| 亚洲精品国产精华液| 曰本三级日本三级日本三级| 在线精品亚洲欧美日韩国产| 国产亚洲精品一区二区| 在线不卡免费视频| 国产精品免费看| 亚洲视频小说| 欧美美女色图| 欧美日本在线播放| 日本一二三区视频| 99久久精品网| 精品乱子伦一区二区三区 | 欧美独立站高清久久| 91久久久久久久久久久| 黄网址在线看| 亚洲美女视频一区| 国产老熟女伦老熟妇露脸| 国产一精品一av一免费爽爽| 亚洲91精品在线| 欧美日韩不卡中文字幕在线| 91啪亚洲精品| 精品人妻一区二区三区免费| 日本免费一区二区三区四区| 欧美精品亚州精品| 亚洲综合在线不卡| 波多野结衣视频一区| 亚洲成人天堂网| 日韩成人在线一区| 2024亚洲男人天堂| 黄页在线免费观看| 亚洲国产精品久久久男人的天堂| 在线免费观看视频| 精品久久久久久久久久久下田 | 久久中文字幕视频| 亚洲大香人伊一本线| 成人不卡免费av| 特黄视频免费观看| 色综合视频一区二区三区日韩| 992tv成人免费视频| 在线观看wwww| 亚洲一区自拍偷拍| 杨钰莹一级淫片aaaaaa播放| 中文一区一区三区免费在线观看| 欧美激情视频一区二区三区|