<div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">Thanks again, Eric.</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">The paper you points me to is indeed a very pertinent reference. I am gonna read it in detail.</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">Very much appreciate your help.</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">Kind regards,</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">haipeng</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Feb 12, 2015 at 6:15 AM, Bodden, Eric <span dir="ltr"><<a href="mailto:eric.bodden@sit.fraunhofer.de" target="_blank">eric.bodden@sit.fraunhofer.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi again.<br>
<span class=""><br>
> What I am trying to do is in essence part of dynamic slicing of distributed programs. I wanted to find all<br>
> the network I/O related function calls in the user program in order to instrument for identifying inter-process (communication) dependencies, which are important parts of a distributed program slice.<br>
><br>
> I think the sniffers can help with network traffic monitoring or so in a standalone manner, but for my task, intercepting the network I/Os programmatically would be desired. I guess something similar to the instrumentation I want has been done by the sniffers inside, yet there is no source code available to refer to regarding how exactly they realized the sniffer functionalities.<br>
<br>
</span>Sniffing happens on a lower level, by intercepting traffic on the OS level. I think that, after all, this does not really compare to what you want to do.<br>
<span class=""><br>
> Although an alternative way would be modifying system calls related to network I/Os at OS level, or changing relevant APIs in JRE assuming that any network libraries the application program uses eventually resort to the JRE APIs, these approaches seem to be overly heavyweight.<br>
<br>
</span>Makes sense<br>
<span class=""><br>
> Also, I am wondering about the state of art/practice of source-code analysis dealing with interprocess dependencies in distributed systems.<br>
<br>
</span>I wonder whether this publication of ours is interesting to you:<br>
<a href="http://www.bodden.de/pubs/omj+13effective.pdf" target="_blank">http://www.bodden.de/pubs/omj+13effective.pdf</a><br>
<br>
It explains how we statically resolve inter-component dependencies in Android. Maybe that gives you some ideas.<br>
<br>
Cheers,<br>
Eric<br>
</blockquote></div><br></div>