赞
踩
近期在做项目的时候运用到了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);
}
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);
}
代码里可能有一些修改残余在里面,我这边也就是做个调试使用,我自己就懒得再修修改改了,能实现功能就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); } } }
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 = "断开连接";
}
以上就是全部了,本人也是新手,所以就不多说什么教程之类的了。
有需要源码的可以私聊留下邮箱或者留言邮箱
走过路过,望赏个一键三连~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。