当前位置:   article > 正文

Visual Studio 2015(C#)编写实现TCP调试助手(服务端+客户端一体)-新手_c# tcp调试助手

c# tcp调试助手

近期在做项目的时候运用到了WIFI模块,想着自己捣鼓捣鼓弄个上位机调试调试。初次接触,长达3天的修修改改终于完成,实现代码比较杂乱,但是可以正常使用。不足之处,还望指正!
话不多说,先看效果:

该助手的话虽说集成了客户端与服务器,但是运行也是分开的。每次只能使用1个功能。当作为服务端时,可随客户端自动断开连接。
以下为具体实现代码:
客户端:

serverIP = IPAddress.Parse(txBip.Text);
            try
            {
                serverFullAddr = new IPEndPoint(serverIP, int.Parse(txBport.Text));//设置IP,端口
                sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                sock.Connect(serverFullAddr);
                btcon.Enabled = false;
                button1.Enabled = false;
                lab_err.Text = "连接成功";
                btdiscon.Enabled = true;
            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.Message);
            }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
byte[] byteSend = System.Text.Encoding.Default.GetBytes(this.textBox3.Text);
            try
            {
                lab_err.Text = "发送成功";
                sock.Send(byteSend);
                Thread.Sleep(300);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

代码里可能有一些修改残余在里面,我这边也就是做个调试使用,我自己就懒得再修修改改了,能实现功能就OK了。不影响实际使用。

服务器端:
这边服务器端采用了多线程,listen。

byte[] message = new byte[1024];
            string mess = "";
            clientIP = IPAddress.Parse(textBox2.Text);
            clientFullAddr = new IPEndPoint(clientIP, int.Parse(textBox4.Text));//设置IP,端口
            sock_server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            sock_server.Bind(clientFullAddr);
            sock_server.Listen(2);
            try
            {
                socket_server = sock_server.Accept();
            }
            catch (Exception ee)
            {
                if (ee.Message != "一个封锁操作被对 WSACancelBlockingCall 的调用中断。")
                {
                    MessageBox.Show(ee.Message);
                }
                Invoke(new ServerRecClose(ClientClose));
                return;
            }
            while (true)
            {
                try
                {
                    int bytes = socket_server.Receive(message);
                    mess = Encoding.Default.GetString(message, 0, bytes);
                    if (mess != "") {
                        Invoke(new PrintRecvMssgDelegate(PrintRecvMssg), mess);
                    }
                    else
                    {
                        Invoke(new ServerRecClose(ClientClose));
                        return;
                    }
                }
                catch (Exception ee)
                {
                    if (ee.Message != "一个封锁操作被对 WSACancelBlockingCall 的调用中断。") {
                        MessageBox.Show(ee.Message);
                    }
                }
            }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
private delegate void PrintRecvMssgDelegate(string s);
        private void PrintRecvMssg(string info)
        {
            textBox1.Text += string.Format("{0}\r\n", info);
        }
        private delegate void ServerRecClose();
        private void ClientClose()
        {
            sock_server.Close();
            btcon.Enabled = true;
            button1.Enabled = true;
            button2.Enabled = false;
            label5.Text = "断开连接";
        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

以上就是全部了,本人也是新手,所以就不多说什么教程之类的了。
有需要源码的可以私聊留下邮箱或者留言邮箱
走过路过,望赏个一键三连~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/583705?site
推荐阅读
相关标签
  

闽ICP备14008679号