Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 捕获TCP同步事件_C#_.net_Events_Sockets - Fatal编程技术网

C# 捕获TCP同步事件

C# 捕获TCP同步事件,c#,.net,events,sockets,C#,.net,Events,Sockets,如何捕获.NET中特定套接字的TCP同步事件 我希望能够启动一种方法,该方法将检测是否发出了SFTP数据传输请求,并在完成时执行一些操作,如通知或日志记录。假定您要检测的套接字的打开和关闭不是您的程序自己负责的,而是系统上的某个其他进程正在处理它,最好的方法可能是使用winpcap库winpcap允许您订阅进出网络接口的所有IP数据包的原始提要。您还可以提供一个过滤器,例如“仅在端口22上显示TCP数据包”。您的程序接收原始数据包,因此您得到以太网报头,然后是IP报头,然后是TCP报头,然后是数

如何捕获.NET中特定套接字的TCP同步事件


我希望能够启动一种方法,该方法将检测是否发出了SFTP数据传输请求,并在完成时执行一些操作,如通知或日志记录。

假定您要检测的套接字的打开和关闭不是您的程序自己负责的,而是系统上的某个其他进程正在处理它,最好的方法可能是使用
winpcap
winpcap
允许您订阅进出网络接口的所有IP数据包的原始提要。您还可以提供一个过滤器,例如“仅在端口22上显示TCP数据包”。您的程序接收原始数据包,因此您得到以太网报头,然后是IP报头,然后是TCP报头,然后是数据有效负载(有效负载将为SFTP加密)。通过分析这些数据包,您将能够在connect上检测TCP握手,了解正在连接的IP和端口,并在TCP蒸汽关闭时检测

我自己不使用.NET,但我确实在Google上找到了这个用于.NET的winpcap包装器,它应该允许您从.NET应用程序中使用
winpcap


您的最终目标不太走运,仅通过查看加密的TCP流无法可靠地确定SFTP级别上发生了什么。不,我不关心实际内容,我只想知道连接何时建立(建立)以及何时关闭(关闭).所以您只是想知道其他程序何时在特定端口上建立和关闭连接(在您的特定情况下为端口22)?您想知道计算机何时连接到端口22,还是想知道有人何时连接到您的端口22?是的,我想知道有人何时在该端口上连接/断开连接。我有一个文件夹,当在该文件夹中创建文件时,FileSystemEventHandler会触发一个方法,该方法应检查该端口上是否建立了连接,并在连接关闭后调用其他一些方法。从winpcap中获取的数据将与从原始套接字中获取的数据一样,但是winpcap只是在“监视”其他人的套接字,并向您显示发生了什么。使用原始套接字API,您可以自己在程序中打开一个套接字并控制它,但这样做是在数据包(原始)级别,而不是更高的(流)级别。PCap设计用于观察套接字(或多个套接字)的运行情况,而不管是谁打开或正在使用它们。Hmmm…将程序绑定到.net,我们计划将其移植到mono上。WinPCAP.net只是WinPCAP的一个包装器,可以从任何语言使用,它实际上是Linux上的一个libpcap端口,做同样的事情。因此,可移植性应该在很大程度上通过PCAPAPI来实现