我在WCf中开发了一些智能设备消耗的服务,例如Android等
当设备调用它们时,我在WCF服务中获得客户端(设备)端点(IpAddress,端口)。之后,我在该IPAddress和端口上发送UDP消息,但该UDP消息不会到达目的地。
可能有一些问题是从客户端提取端口,因为服务可能在HTTP上,我得到HTTP端口并在该端口不接受的端口上发送UDP消息。
请帮忙。
下面是提取客户端IPAddress和PORT并在该点上发送UDP消息的代码
OperationContext context = OperationContext.Current;
MessageProperties messageProperties = context.IncomingMessageProperties;
var endpointProperty = messageProperties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
int nRemotePort = 0;
string sRemoteAddress = "";
if (endpointProperty != null)
{
sRemoteAddress = endpointProperty.Address;
nRemotePort = endpointProperty.Port;
}
//获得了IPAddress和Port,现在将UDP消息发送到地址
UdpClient udpClient = new UdpClient();
udpClient.Connect(sRemoteAddress, nRemotePort);
string msgTag = ((DateTime.Now.Month.ToString().PadLeft(2, '0') + DateTime.Now.Day.ToString().PadLeft(2, '0') + DateTime.Now.Year.ToString().PadLeft(4, '0')) + DateTime.Now.Hour.ToString().PadLeft(2, '0') + DateTime.Now.Minute.ToString().PadLeft(2, '0')) + DateTime.Now.Second.ToString().PadLeft(2, '0') + DateTime.Now.Millisecond.ToString().PadLeft(3, '0');
string msgBody = "786022^Successfully Connected to Server, now send Data";
string msg = "8^" + msgTag + "^45^1^0^" + msgBody.Length + Convert.ToChar(2).ToString() + msgBody + Convert.ToChar(4).ToString();
byte[] sendBytes = Encoding.ASCII.GetBytes(msg);
udpClient.Send(sendBytes, sendBytes.Length);
udpClient.Close();
答案 0 :(得分:1)
解开了这个谜,实际上我是从WCF服务中提取TCP端口并在该端口上发送我的UDP消息,这是错误的。
现在我必须在设备应用程序中粘贴UDP端口并将我的消息发送到从WCF提取的IPAddress,并确定UDP端口。