110,538
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.IO;
using System.Xml;
using System.Diagnostics;
namespace UDPTest2_2
{
public partial class Form1 : Form
{
Thread thread;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Form1.CheckForIllegalCrossThreadCalls = false; //不可在多线程中使用
thread = new Thread(new ThreadStart(ReceiveDataFromUDPClient)); //调用类
thread.IsBackground = true; //是否结束线程
thread.Start(); //开始运行
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom; //调整图片显示样式
//pictureBox1.Image = Image.FromFile("D:\\Ftp\\HandWritingDir\\123.jpg");
}
public void ReceiveDataFromUDPClient()
{
try{
while (true)
{
XmlDocument doc = new XmlDocument(); //调用XML
doc.Load("XMLFile1.xml"); //指定Xml文件路径
XmlNode node; //读取节点
node = doc.SelectSingleNode("//Config/SvcInfo/SvcPort/text()"); //读取XML节点
string svcPort = node.Value; //定义节点数值
if (svcPort.Length > 0) //当对象>0时,执行程序
{
UdpClient udpClient = new UdpClient(int.Parse(svcPort)); //实例化一个对象
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, int.Parse(svcPort)); //获得从主机返回的Udp数据
Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint); //获得服务器端的数据
string returnData = Encoding.Default.GetString(receiveBytes); //获得相应主机的ip和port
textBox1.Text = DateTime.Now + "时:" + returnData.ToString(); //显示日期和接收到的数据
udpClient.Close();
//获取文件在手机上的路径名
String filerout = returnData.ToString();
//获取文件名称
String filename = filerout.Substring(filerout.LastIndexOf("/") + 1, filerout.Length - filerout.LastIndexOf("/") -1);
//找到图片在本机上的存储路径
String picrout = "D:\\Ftp\\HandWritingDir\\" + filename;
//加载图片
Thread.Sleep(100);
pictureBox1.Image = Image.FromFile(picrout);
}
//关闭UDP连接
}
}
catch(Exception y)
{
MessageBox.Show(y.Message);
}
}
private void button1_Click(object sender, EventArgs e)
{
this.Close();
}
}
}