C#UDPSocket客户端和服务器我的第一个问题。我是这种编程的新手,我只编写过.NET网站和表单。现在,我工作的公司要求我制作一个ActiveX组件来侦听UDP消息并将它们转换为事件。UDP消息是从Avaya系统发送的,所以我被告知要测试我的ActiveX,首先我需要创建一个只发送UDP的应用程序(只是一个发送预定义UDP字符串的按钮)。然后创建侦听器套接字,普通的C#应用程序,它将从测试应用程序中获取那些传输的UDP字符串。这两个应用程序可以在同一台机器上运行稍后,当我开始工作时,我需要让监听器成为一个ActiveX组件,但首先是第一件事。我需要知道是否有关于此的任何好的教程,以及关于如何开始的任何想法?我很抱歉我的无知,但我真的很新,我真的没有时间学习这个,因为它必须在2周内完成。提前致谢。编辑:我设法创建了2个简单的控制台应用程序并成功地在它们之间发送了UDP消息。发送方仅用于测试,现在我需要重置接收方以获取UDP消息并将它们“转换”为事件。最后,使其成为ActiveX控件……简单服务器和客户端:publicstructReceived{publicIPEndPointSender;公共字符串消息;}抽象类UdpBase{受保护的UdpClient客户端;protectedUdpBase(){Client=newUdpClient();}publicasyncTaskReceive(){varresult=awaitClient.ReceiveAsync();returnnewReceived(){Message=Encoding.ASCII.GetString(result.Buffer,0,result.Buffer.Length),Sender=result.RemoteEndPoint};}}//服务器类UdpListener:UdpBase{privateIPEndPoint_listenOn;publicUdpListener():this(newIPEndPoint(IPAddress.Any,32123)){}publicUdpListener(IPEndPointendpoint){_listenOn=endpoint;Client=newUdpClient(_listenOn);}publicvoidReply(stringmessage,IPEndPointendpoint){vardatagram=Encoding.ASCII.GetBytes(message);Client.Send(数据报,数据报。长度,端点);}}//客户端类UdpUser:UdpBase{privateUdpUser(){}publicstaticUdpUserConnectTo(stringhostname,intport){varconnection=newUdpUser();connection.Client.Connect(主机名,端口);返回连接;}publicvoidSend(stringmessage){vardatagram=Encoding.ASCII.GetBytes(message);Client.Send(数据报,数据报长度);}}classProgram{staticvoidMain(string[]args){//创建一个新服务器varserver=newUdpListener();//开始监听消息并将消息复制回客户端.Message,received.Sender);if(received.Message=="quit")中断;}});//创建一个新的客户端varclient=UdpUser.ConnectTo("127.0.0.1",32123);//等待来自服务器的回复消息并将它们发送到控制台;如果(received.Message.Contains("quit"))break;}catch(Exceptionex){Debug.Write(ex);}}});//输入一个head:-)字符串读取;做{读取=Console.ReadLine();客户端。发送(读取);}while(read!="quit");}}简单服务器和客户端:usingSystem;使用系统文本;使用System.Net;使用System.Net.Sockets;classProgram{staticvoidMain(string[]args){//创建UDP客户端intreceiverPort=20000;UdpClient接收器=newUdpClient(receiverPort);//显示一些信息Console.WriteLine("StartingUpdreceivingonport:"+receiverPort);Console.WriteLine("按任意键退出。");Console.WriteLine("--------------------------------n");//开始异步接收receiver.BeginReceive(DataReceived,receiver);//使用(UdpClientsender1=newUdpClient(19999))发送一些测试消息sender1.Send(Encoding.ASCII.GetBytes("Hi!"),3,"localhost",receiverPort);使用(UdpClientsender2=newUdpClient(20001))sender2.Send(Encoding.ASCII.GetBytes("Hi!"),3,"localhost",receiverPort);//等待任意键终止应用程序Console.ReadKey();}私人的staticvoidDataReceived(IAsyncResultar){UdpClientc=(UdpClient)ar.AsyncState;IPEndPointreceivedIpEndPoint=newIPEndPoint(IPAddress.Any,0);Byte[]receivedBytes=c.EndReceive(ar,refreceivedIpEndPoint);//将数据转换为ASCII并在控制台打印stringreceivedText=ASCIIEncoding.ASCII.GetString(receivedBytes);Console.Write(receivedIpEndPoint+":"+receivedText+Environment.NewLine);//重启监听udp数据包c.BeginReceive(DataReceived,ar.AsyncState);}}服务器publicvoidserverThread(){UdpClientudpClient=newUdpClient(8080);while(true){IPEndPointRemoteIpEndPoint=newIPEndPoint(IPAddress.Any,0);Byte[]receiveBytes=udpClient.Receive(refRemoteIpEndPoint);字符串returnData=Encoding.ASCII.GetString(receiveBytes);lbConnections.Items.Add(RemoteIpEndPoint.Address.ToString()+":"+returnData.ToString());}}并开始化线程序privatevoidForm1_Load(objectsender,System.EventArgse){ThreadthdUDPServer=newThread(newThreadStart(serverThread));thdUDPServer.Start();}clientprivatevoidbutton1_Click(objectsender,System.EventArgse){UdpClientudpClient=newUdpClient();udpClient.Connect(txtbHost.Text,8080);Byte[]senddata=Encoding.ASCII.GetBytes("HelloWorld");udpClient.Send(senddata,senddata.Length);}在按钮命令中插入这个来源:http://technotif.com/creating-simple-udp-server-client-transfer-data-using-c-vb-net/以上就是C#学习教程:全部内容C#UDPsocketclientandserver分享的,如果对大家有用还需要了解更多C#学习教程,希望大家多多关注—本文收集自网络,不代表立场.如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
