我使用WCF在Visual Studio中创建了一个简单的TCP客户端和TCP服务器。我在服务器上有一个简单的操作,它接收一个整数,递增并发送回去。它按预期工作。
我想使用Wireshark来监控在localhost上运行的客户端和服务器之间的流量。显然,在Windows上使用Wireshark标准安装是不可能的,因为它无法监视环回适配器。有一个名为Npcap的库旨在解决这个问题,所以我安装了这个:
当我运行Wireshark时,选择
的捕获Npcap环回适配器
我没有看到任何TCP流量(仅限某些UDP和DHCP)。我想知道我期待看到什么?
服务器的C#代码在这里(我已经以编程方式创建它,以便您可以看到所有细节,App.Config中没有配置任何内容)
using System;
using System.ServiceModel;
using System.ServiceModel.Description;
namespace TcpServer
{
// Defining the service
[ServiceContract]
public interface ITcpService
{
[OperationContract]
int GetNumber(int num);
}
// Implementing the service
public class TcpService : ITcpService
{
public int GetNumber(int num)
{
return num + 1;
}
}
class TcpServerConsole
{
static void Main(string[] args)
{
ServiceHost host;
// Attempt to open the service
try
{
// Create the service host with a Uri address and service description
host = new ServiceHost(typeof(TcpService), new Uri("net.tcp://127.0.0.1:9000/MyService"));
// Create the metadata that describes our service, add it to the service host
var metadataBehavior = new ServiceMetadataBehavior() { HttpGetEnabled = false };
host.Description.Behaviors.Add(metadataBehavior);
// Add a tcp endpoint for our service, using tcp
host.AddServiceEndpoint(typeof(ITcpService), new NetTcpBinding(), "");
// Add the meta data service endpoint for describing the service
var mexBinding = MetadataExchangeBindings.CreateMexTcpBinding();
host.AddServiceEndpoint(typeof(IMetadataExchange), mexBinding, "net.tcp://127.0.0.1:9000/MyService/mex");
// Open our service
host.Open();
}
catch (Exception e)
{
// Catch any problem with creating the service and report
Console.WriteLine("Failed to open the server: {0}", e.Message);
Console.WriteLine("Press [Return] to close");
Console.ReadKey(true);
return;
}
// Halt the program to keep the service open
Console.WriteLine("Press [Return] to close server");
Console.ReadKey(true);
host.Close();
}
}
}
答案 0 :(得分:3)
我是Npcap的作者。首先感谢你的报告!
首先我想提一下,获得Npcap帮助的最佳方法是使用邮件列表:dev@nmap.org或在https://github.com/nmap/nmap/issues解决问题。我每天检查这些地方。我主要使用Stackoverflow
来提问,但不会搜索和回答有关Npcap的问题。
我不是C#的专家。我在VS2015中创建了一个WCF Service Application
项目。将您的代码复制到我的Service1.svc.cs
。将其构建为WcfService1.dll
。但我不知道如何使用它?
您介意提供所有服务器和客户端代码(包括解决方案文件)吗?所以我可以用它们来测试Npcap(不需要掌握有关C#和WCF的知识)。您可以压缩代码并将邮件附加到dev@nmap.org。我会回复。谢谢!