我在 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();