近期在做项目的时候运用到了WIFI模块,想着自己捣鼓捣鼓弄个上位机调试调试。初次接触,长达3天的修修改改终于完成,实现代码比较杂乱,但是可以正常使用。不足之处,还望指正!
话不多说,先看效果:
该助手的话虽说集成了客户端与服务器,但是运行也是分开的。每次只能使用1个功能。当作为服务端时,可随客户端自动断开连接。
以下为具体实现代码:
客户端:
serverIP = IPAddress.Parse(txBip.Text);
try
{
serverFullAddr = new IPEndPoint(serverIP, int.Parse(txBport.Text));
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));
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 = "断开连接";
}
以上就是全部了,本人也是新手,所以就不多说什么教程之类的了。
有需要源码的可以私聊留下邮箱或者留言邮箱
走过路过,望赏个一键三连~
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)