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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

  [復制鏈接]
ID:319065 發(fā)表于 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);//創(chuàng)建新線程
  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);//創(chuàng)建新線程
  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();//避免在事件處理方法中反復的創(chuàng)建,定義到外面。
  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規(guī)則轉換成字符串
  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 數據發(fā)送處理
  289.         private void btnMySendMessage_Click(object sender, EventArgs e)//發(fā)送數據
  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)//十六進制發(fā)送
  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);//發(fā)送字節(jié)
  321.                     //s = Encoding.GetEncoding("Gb2312").GetString(by);//在派生類中重寫時,將指定字節(jié)數組中的所有字節(jié)解碼為一個字符串。。
  322.                 }
  323.                 else//ASCII發(fā)送
  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("發(fā)送數據時發(fā)生錯誤!", "錯誤提示");
  342.             }            
  343.         }

  344.         private void timer1_Tick(object sender, EventArgs e)//定時發(fā)送
  345.         {
  346.             timer1.Interval = Convert.ToInt32(textBox1.Text);
  347.             try
  348.             {
  349.                 if (checkBox5.Checked == true)
  350.                 {                  
  351.                     if (checkBox4.Checked)//十六進制發(fā)送
  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);//發(fā)送字節(jié)
  370.                         //s = Encoding.GetEncoding("Gb2312").GetString(by);//在派生類中重寫時,將指定字節(jié)數組中的所有字節(jié)解碼為一個字符串。。
  371.                     }
  372.                     else//ASCII發(fā)送
  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("發(fā)送數據時發(fā)生錯誤!", "錯誤提示");
  392.             }            
  393.         }

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

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

  404.         private void checkBox4_CheckedChanged(object sender, EventArgs e)//發(fā)送HEX區(qū)處理
  405.         {
  406.             string s = "";
  407.             if (checkBox4.CheckState == CheckState.Checked)//發(fā)送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//發(fā)送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 外部調用的發(fā)送接口
  463.         public void mySendDataHandle(string mySendDataIn)
  464.         {
  465.             try
  466.             {
  467.                 if (checkBox4.Checked)//十六進制發(fā)送
  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);//發(fā)送字節(jié)
  486.                     //s = Encoding.GetEncoding("Gb2312").GetString(by);//在派生類中重寫時,將指定字節(jié)數組中的所有字節(jié)解碼為一個字符串。。
  487.                 }
  488.                 else//ASCII發(fā)送
  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("發(fā)送數據時發(fā)生錯誤!", "錯誤提示");
  507.             }
  508.         }//*/
  509.         #endregion
  510.     }
  511. }
復制代碼


評分

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

查看全部評分

回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
欧美区在线观看| japanese在线视频| 在线观看国产91| 成人黄色综合网站| 欧美色就是色| 伊人久久综合一区二区| 成人a视频在线| 美女把尿口扒开让男人桶在线观看| 夫妻性生活毛片| 高清一区在线观看| 日韩福利二区| 国产精品美女免费看| 亚洲人成网7777777国产| 亚洲h在线观看| 成人av在线影院| 99亚洲一区二区| 美女福利一区| 神马午夜在线视频| 欧美成人免费| 天天撸天天射| 欧美video巨大粗暴18| 亚洲一卡二卡在线| 91狠狠综合久久久| 精人妻一区二区三区| 久久国产精品网| 久久精品九色| 97超碰在线资源站| 黄色av小说在线观看| 99国产精品无码| 亚洲色图欧美自拍| 免费的一级黄色片| 国产中文一区二区| 欧洲成人午夜免费大片| 亚洲网在线观看| 538在线一区二区精品国产| 亚洲色图制服丝袜| 成人黄色av电影| 日韩电影免费在线看| 亚洲精品一区二区在线看| 国内毛片久久| 国产精品美女午夜爽爽| 人妖欧美1区| 国产中文字幕在线播放| 日本视频一二三区中文字幕| 免费人成福利播放| 欧美成人禁片在线www| 天堂网在线资源| 一本一道精品欧美中文字幕| 黄网站免费在线| 激情五月激情综合| 精品人妻一区二区三区视频| 亚洲国产日韩在线一区| 人人爽人人av| 欧美精品成人网| 黄色免费观看视频网站| 久久综合久久久久| eeuss中文| 日韩精品极品视频在线观看免费| 国产精品日本一区二区 | 国产一区视频网站| 日韩影院精彩在线| 久久电影一区| 美女日韩在线中文字幕| 国产精品亚洲产品| 美女诱惑一区| 日韩在线一二三区| 日韩国产精品大片| 青青草97国产精品免费观看无弹窗版 | 激情小说图片视频| 免费看黄色网| jizzjizz免费| 午夜爽爽爽男女免费观看影院| www.狠狠艹| 97秋霞电影网| 日韩写真在线| 蜜桃成人在线视频| 91视频在线观看| а√天堂8资源在线官网| 欧美日韩在线视频免费观看| 无遮挡爽大片在线观看视频| 日韩另类视频| swag国产精品一区二区| 国产精品探花在线观看| 7777久久香蕉成人影院| 亚洲国产国产亚洲一二三| 在线观看一区| 奇米四色…亚洲| 福利一区二区在线观看| 91蝌蚪porny九色| 国产精品久久久久久久久久久免费看| 国产精品福利一区二区| 依依成人精品视频| 欧美性黄网官网| 欧美一区三区四区| 国产一区二区黄| 久久久久久久久久久久久久久久久久av | 久久视频www| 日本视频不卡| 少妇淫片在线影院| 日韩第一区第二区| 精品少妇av| 在线午夜精品| 成人性生交大合| 亚洲欧洲精品一区二区三区不卡| 午夜私人影院久久久久| 欧美一区2区视频在线观看| 亚洲深夜福利在线| 欧美综合一区第一页| 99在线看视频| 日韩极品视频在线观看 | 精品一区二区观看| heisi视频网在线观看| 涩涩视频在线观看免费| 九色porny丨国产首页在线| 久久99成人| 伊人久久大香线| 国内精品久久久久影院色| 欧美韩国日本不卡| 欧美日韩免费一区二区三区视频| 亚洲人午夜精品| 国产成人综合av| 无码免费一区二区三区免费播放| 日韩毛片在线免费看| 91黄色免费视频| 国产精品999在线观看| 女人18毛片水真多18精品| 毛片基地网站| 思思99re6国产在线播放| 成人毛片免费| 66视频精品| 成av人片一区二区| 日韩欧美在线免费| 中文日韩在线视频| 91亚洲精华国产精华| 国产在线视频在线| 国产高清自拍视频| 波多野结衣影片| 国产精品入口麻豆免费| 猫咪在线永久网站| 日韩黄色三级在线观看| 国产字幕视频一区二区| 久久新电视剧免费观看| 欧美色国产精品| 久久国产精品网站| 乱一区二区三区在线播放| 亚洲免费av一区二区三区| www.5588.com毛片| 五月婷中文字幕| 91天堂在线| 亚洲精品555| 亚洲二区视频| 亚洲欧美色图小说| 亚洲一区999| 国产一区二区不卡视频| 青青草原国产在线视频| 91美女免费看| 免费毛片观看| 中文字幕成在线观看| 欧美精品成人| 亚洲色图视频网| 综合av色偷偷网| 欧美日韩免费观看一区| 91精品啪在线观看国产| 99riav国产| 绯色av一区二区| 亚洲图色一区二区三区| 精品一区二区三区免费毛片爱| 欧美日韩一二三四五区| 久久久久久亚洲精品| 咪咪色在线视频| 久久久国产一级片| 一本久久精品| 精品176二区| 国产精品麻豆久久| 中文字幕在线不卡国产视频| 在线观看精品自拍私拍| 婷婷四房综合激情五月| 日本在线观看网址| 国产精品入口麻豆免费| 成人女同在线观看| 亚洲激情亚洲| 日韩欧美极品在线观看| 国产va免费精品高清在线| 欧美性大战久久久久xxx| 日本网站在线播放| 丁香综合在线| 日韩中文字幕在线一区| 成人精品视频.| 亚洲美女av电影| 亚洲一区二区三区午夜| 成人免费精品动漫网站| 免费黄色大片| 在线视频成人| 成人av在线观| 一区二区欧美亚洲| 激情五月六月婷婷| 五月天婷婷网站| 国产女呦网站| 久久99性xxx老妇胖精品| 日本一区二区动态图| 久久这里只有精品99| 成人免费在线网| 日韩xxx视频| 欧美偷拍视频| 综合激情视频| 欧美丝袜第三区| 国产一区精品视频| av黄色免费在线观看| eeuss影院95999部| 网曝91综合精品门事件在线| 亚洲欧洲精品一区二区三区 | 欧美日韩一级片在线观看| 91免费欧美精品| 88久久精品无码一区二区毛片| xxx欧美尤物xxx| 四虎国产精品免费久久| 91色婷婷久久久久合中文| 久久精品国产视频| 日韩无套无码精品| 日本精品一区二区在线观看| 成人免费一区二区三区牛牛| 国产在线视频一区二区三区| 国产亚洲欧洲黄色| 亚洲熟妇av一区二区三区漫画| 99国产精品99| 黄色漫画在线免费看| 韩国成人精品a∨在线观看| 亚洲美女www午夜| 奇米影视亚洲色图| 高h震动喷水双性1v1| 超碰高清在线| 97se亚洲国产综合自在线| 久久躁狠狠躁夜夜爽| 日韩视频在线观看一区二区三区| 一本大道久久精品| 影音先锋欧美激情| 艳妇臀荡乳欲伦亚洲一区| 成人网中文字幕| 国产美女高潮视频| 最新地址在线观看| 国产欧美亚洲一区| 亚洲少妇中文在线| 欧美日韩一区二区三区69堂| 国产在线视精品麻豆| 精品资源在线| 91国偷自产一区二区开放时间 | 国产精品视频一区二区三区四| 国产精品无码午夜福利| 九七伦理97伦理手机| 亚洲精品中文字幕乱码| 精品精品国产高清一毛片一天堂| av一区二区三区免费观看| 亚洲风情第一页| 黄色成人在线观看网站| 草草在线观看| 亚洲国产成人午夜在线一区| 91免费视频网站| 久久露脸国语精品国产91| 国产在线一区二区视频| 成人18精品视频| 国产噜噜噜噜噜久久久久久久久 | 成年人视频网站免费| 超碰在线播放97| 亚洲精品66| 富二代精品短视频| 欧美日韩一级在线| 亚洲第一页在线播放| 51vv免费精品视频一区二区| 色婷婷综合激情| 色撸撸在线观看| 中文xxx视频| 欧美自拍视频| 欧美变态口味重另类| 免费观看成人网| jizzjizzjizzjizz日本老师| 亚洲国内自拍| 久久成人这里只有精品| 久久成人激情视频| av在线电影院| 久久九九久精品国产免费直播| 粉嫩av免费一区二区三区| 一本色道久久综合精品婷婷| 亚洲福利影视| 精品视频色一区| 成人免费毛片播放| 爱爱视频网站| 免费看的黄色欧美网站| 久久免费视频这里只有精品| www.av免费| 黑人极品ⅴideos精品欧美棵| 中文字幕一区二区三区乱码在线| 欧美日韩国产综合在线| free性欧洲69| 久久美女精品| 日韩中文字幕网| 99精品中文字幕| 啦啦啦中文在线观看日本| 亚洲欧美日韩在线不卡| 亚洲看片网站| 国产精选在线观看| 亚洲美女视频在线免费观看| 久久久久久久97| 国产一级做a爱片久久毛片a| 素人啪啪色综合| 欧美日高清视频| 成年人性生活视频| caoliu在线| 国产福利一区二区三区在线视频| 成人福利视频在线观看| 一区二区三区精| 欧美视频二区欧美影视| 日韩欧美国产综合| 丝袜熟女一区二区三区| 久久精品国产亚洲a∨麻豆| 99精品视频在线观看免费| 精品免费国产| 偷窥韩漫第三季| 日韩a一区二区| 另类视频在线观看| 久久高清免费视频| 九七影院97影院理论片久久| 欧美群妇大交群中文字幕| 亚洲欧美日韩色| jyzzz在线观看视频| 亚洲男人的天堂一区二区| 亚洲欧美日本国产有色| 免费看美剧网站| 日本美女视频一区二区| 国产日韩中文字幕| 依依成人在线视频| 欧美电影完整版在线观看| 日韩最新av在线| 国产高清在线免费观看| 国产一区二区三区| 亚洲免费中文字幕| 欧美手机在线观看| 亚洲一区二区三区四区| 日韩一区二区三区观看| 三级男人添奶爽爽爽视频| 都市激情国产精品| 欧美在线不卡视频| 人妻av一区二区三区| 男女在线观看视频| 欧美伊人精品成人久久综合97| 波多野吉衣在线视频| 草草视频在线观看| 日韩欧美成人激情| 国产成人精品无码免费看夜聊软件| 密臀av在线播放| 日韩美女一区二区三区四区| 国产喷水在线观看| 91成人福利| 色悠悠久久久久| 国产免费a视频| 亚洲精品国产偷自在线观看| 国产精品∨欧美精品v日韩精品| 人妻一区二区三区四区| 亚洲欧美日韩在线观看a三区| 成人国产一区二区| 国产激情小视频| 成人午夜电影网站| 4444亚洲人成无码网在线观看| 超碰在线电影| 亚洲欧美日韩一区| 日批视频在线看| а√在线中文网新版地址在线| 欧美mv日韩mv国产网站app| 日本在线视频免费观看| 久久香蕉精品香蕉| 国内成人精品视频| 先锋av资源站| 老司机一区二区| 在线综合视频网站| 黄色一级影院| 亚洲综合久久av| 精品人妻无码一区二区三区换脸| 日本美女久久| 日韩一区二区三区国产| 狠狠人妻久久久久久综合麻豆| 日韩在线一二三区| 国产911在线观看| 蜜桃免费在线| 日韩精品中文字幕在线不卡尤物| 久久一二三四区| 日韩欧美不卡| 国产精品爽黄69| 轻轻操 在线观看| 中文字幕亚洲一区二区av在线| 涩多多在线观看| 久久精品嫩草影院| 丝袜情趣国产精品| 午夜久久久久久久久久| 国产精品一区二区三区四区 | 国产黄色片免费| 日韩精品1区2区3区| 日本xxxxx18| 1pondo在线播放免费| 欧美大片免费久久精品三p| 黄瓜视频在线免费观看| 免播放器亚洲|