我简单写个吧。不会你在问我
using System
using System.Collections.Generic
using System.Linq
using System.Text
using System.Net
using System.Net.Sockets
private void button1_Click(object sender, EventArgs e)
{
/*构建UDP服务器*/
/*得到本机IP,设置UDP端口号*/
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 10000)
Socket command_sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
/*绑定网络地址*/
command_sock.Bind(ipep)
Console.WriteLine("这是个UDP服务器,名字是 {0}", Dns.GetHostName())
while (true)
{
/绝橡*接收信息*/
command_sock.ReceiveTimeout = 10000//设哗宏友置接收超时时间单位毫秒
try
{
int recv = command_sock.ReceiveFrom(data, ref Remote)
/*得到乱槐目标的IP 端口*/
Console.WriteLine("Message received from {0}: ", Remote.ToString())
/*得到收到的信息*/
Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv))
}
catch
{
Console.WriteLine("连接超时~~ ")
continue
}
if(data[0] == 1)
{
/*打开新窗口,前提你已经创建了新的form*/
form2 new_form= new form2 ()
new_form.ShowDialog()
}
else if(data[0] == 2)
{
/*关闭现在的窗口*/
this.Close()
}
else if(data[0] == 3)
{
/*隐藏现在窗口*/
this.Hide()
}
}
}
不过这样写就是个按钮事件,而且是循环的。会导致你主窗口卡主。如果想留长点,用多线程多进程写好点
打开C++Builder编程软件,新建一个项目,新建一个窗口,咐森在工具栏上找到UDPSocket控件,如图在图中,选择【Internet】页面,出面控件列表,选择【UDPSocket】控件,在倒数第三个,图中都时行了标注,在新窗口中,按住鼠标左键,拖出控件,如图
选中该控件,在属性列表中设置其属性,如图
设置LocalHost(为客户端的IP地址)、RemoteHost(服务器端的IP地址)、RemotePort(服务器端的通信端口)的值。双击窗口中的UDPSocket控件,出现如图界面
d出代码编写界面后,编写UDPSocket控件连接代码:
//---------------------------------------------------------------------------
void __fastcall TForm7::UdpSocket1Connect(TObject *Sender)
{
Label2->Caption="连接中..."
AnsiString s="abcdef"
Char *Buffer
Buffer[0]=0x11// 数据块长度
Buffer[1]=0x11 // 重置命令
Buffer[2]=0x11// 当前版本号
Buffer[3]=0x11//重置结果,应答时有效
Buffer[4]='\0'
//发送数据
/空让/UdpSocket1->SendBuf(Buffer,sizeof(Buffer))
UdpSocket1->Sendln(s,"")
Label2->Caption="发送连接报文..."
}
代码编写完成后,添加触发按钮,在窗口中添加【确定衡亏亩】和【退出】按钮,如图
分别双击【确定】和【退出】按钮,跳转到代码编写界面。点击【确定】按钮,触发UDP连接事件,代码如下:
//发送设置报文
//UdpSocket1->Active=true
Label2->Caption="开始发送报文..."
UdpSocket1->Open()
【退出】按钮的事件如图
都设置完成后,打开网络调试助手,设置好配置条件,连接,如图
步骤阅读
设置完成后,运行程序,可以在网络调试助手界面上显示程序发过来的数据。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)