这是窗口的代码
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
using System.Threading;
namespace uclient1
{
public partial class Form1 : Form
{
private static IPAddress ip;
private static int port;
public static Form1 f = new Form1();
MyUDP client = new MyUDP();
public Form1()
{
InitializeComponent();
ip = IPAddress.Parse(textBox2.Text.ToString());
port = 33332;
}
}
}
封装的一个类、
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
using System.Threading;
namespace uclient1
{
class MyUDP
{
public MyUDP()
{
Thread t = new Thread(receiver);
t.IsBackground = true;
t.Start();
}
public delegate void ShwMsgforViewCallBack(string str);//定义委托(显示消息)
public ShwMsgforViewCallBack shwMsgforViewCallBack;
public bool tag = true;
public void ShwMsgforView(string str) //ShwMsgforViewCallBack的委托
{
Form1.f.listBox1.Items.Add(str); //把值写入
}
public void receiver()
{
UdpClient u2 = new UdpClient(33333); //我一运行程序,程序在这两句循环,不往下执行,然后报只能出现一次的错误
IPEndPoint IPE = null; //
try
{
while (tag)
{
byte[] receiverData = u2.Receive(ref IPE);
string data = Encoding.ASCII.GetString(receiverData);
Form1.f.listBox1.Invoke(shwMsgforViewCallBack, data);
}
u2.Close();
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
------解决思路----------------------
UdpClient u2 = new UdpClient(33333); 端口33333 重复使用导致了。输入端口,别这么随意行不行?
在界面上放一个textbox,用于输入端口值,不同的窗口要不同的端口值。
------解决思路----------------------
你先去 msdn上知悉一下 UdpClient 都有那几种构造函数吧。
------解决思路----------------------
执行两次说明函数掉了两次,不往下执行是因为异常抛出了。多线程调试不要打断点,用输出。