我需要知道我是否可以使用TFTP创建WCF服务以从设备获取数据。我知道我可以使用C#创建一个应用程序来做到这一点,但我试图使它成为一个基于Web的应用程序。此外,WCF需要托管在IIS上。我想使用WCF服务来启动连接,然后从设备中提取图像。当我运行我的代码时,似乎没有SendTo命令的问题,但它总是给我一个“System.Net.Sockets.SocketException(0x80004005):连接尝试失败,因为连接方在一段时间后没有正确响应的时间,或建立连接失败,因为连接的主机未能响应System.Net.Sockets.Socket ReceiveFrom(...)。这是因为我使用netTcpBinding?我可以使用基本的HTTP绑定?还是其他什么东西或者,也许它只是不能使用WCF来创建此服务,想法??我可以使用WCF从使用tftp(UDP)的设备获取数据吗?
服务代码段:
public byte[] ipTftpGet(String xferFileName)
{...
byte[] rcvBuffer = new byte[5200];
....
try
{
ipEndPointFtp = new IPEndPoint(ipAddress, 69);
tftpS = new Socket(ipEndPointFtp.AddressFamily, SocketType.Dgram, ProtocolType.Udp);
remoteEP = ipEndPointFtp;
// Request and Receive first Data Packet From TFTP Server
tftpS.SendTo(sndBuffer, nameLen, System.Net.Sockets.SocketFlags.None, remoteEP);
tftpS.ReceiveTimeout = 1000;
try
{
len = tftpS.ReceiveFrom(rcvBuffer, ref remoteEP);//tftpS.ReceiveFrom(rcvBuffer, ref remoteEP);
rcvBuffer[len] = 0x00;
}
catch (System.Net.Sockets.SocketException ex)
{
xferValid = false;
errMsgStr = ex.ToString();
}
}
的Web.config:
<services>
<service behaviorConfiguration="mexBehavior"
name="ComService.ComService">
<endpoint address="ComService" binding="netTcpBinding"
contract="ComService.IComService" />
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:8090" />
<add baseAddress="http://localhost:8080" />
</baseAddresses>
</host>
</service>
</services>