110,567
社区成员
发帖
与我相关
我的任务
分享
protected override void OnStart(string[] args)
{
Task task = Task.Factory.StartNew(testThread);
}
private void testThread()
{
UdpClient udpClient = new UdpClient(8001);
IPEndPoint server = new IPEndPoint(IPAddress.Parse("192.168.11.11"), 8001);
while (true)
{
byte[] recvData = udpClient.Receive(ref server); // 问题出在这句,一直处于堵塞状态,若不采用多线程,能接受到数据
}
}
protected override void OnStop()
{
udpClient.Client.Shutdown(SocketShutdown.Both);
}
public static void StartServer()
{
IPEndPoint ip = new IPEndPoint(IPAddress.Parse(IP), Port);
udpserver = new UdpClient(ip);
udpserver.BeginReceive(ReciveCallBack, udpserver);
}
public static void ReciveCallBack(IAsyncResult ar)
{
try
{
UdpClient udp = ar.AsyncState as UdpClient;
IPEndPoint remote = new IPEndPoint(IPAddress.Any, 0);
byte[] data = udp.EndReceive(ar, ref remote);//获取接收的数据
Console.WriteLine(string.Format("来自{0}的数据", remote.ToString());
udpserver.BeginReceive(ReciveCallBack, udpserver);
}
catch (Exception ex)
{
}
}
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
Task task = Task.Factory.StartNew(testThread);
}
private void testThread()
{
UdpClient udpClient = new UdpClient(8001);
IPEndPoint server = new IPEndPoint(IPAddress.Parse("192.168.11.11"), 8001);
while (true)
{
byte[] recvData = udpClient.Receive(ref server); // 问题
string dataString = Encoding.ASCII.GetString(recvData);
}
}
}