<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6013019333081665053</id><updated>2025-11-27T10:32:01.361-08:00</updated><category term="System.Net"/><category term="Socket"/><category term="Network"/><category term="ICMP"/><category term="Microsoft"/><category term="Tracing"/><category term="Avro"/><category term="Kafka"/><category term="Apache"/><category term="Authentication"/><category term="HttpWebRequest"/><category term="KafkaAvroSerializer"/><category term="Logging"/><category term="Unified Messaging"/><category term="ByteBuffer"/><category term="Debugging"/><category term="Exchange"/><category term="Java"/><category term="NTLM"/><category term="cpra"/><category term="kafka-connect"/><category term="ping"/><category term="python"/><category term="single-message-transform"/><category term="BinaryReader"/><category term="BinaryWriter"/><category term="DataInputStream"/><category term="DataOutputStream"/><category term="Enum"/><category term="GLBA"/><category term="Hive"/><category term="KafkaConnect"/><category term="Lucene"/><category term="Parquet"/><category term="RMI JMX"/><category term="Search"/><category term="SendFile"/><category term="Spark"/><category term="Tracing WebClient Multipart MIME Form Post FileUpload"/><category term="TransmitFile"/><category term="WWW HTTPS"/><category term="apple"/><category term="ccpa"/><category term="iphone"/><category term="pii"/><category term="retina display"/><title type='text'>Feroze&#39;s musings on Technology</title><subtitle type='html'>I write about all things technology related. Currently focused on Kafka, Avro and related ecosystem of services.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://ferozedaud.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default'/><link rel='alternate' type='text/html' href='https://ferozedaud.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default?start-index=26&amp;max-results=25'/><author><name>Feroze Daud</name><uri>http://www.blogger.com/profile/02314158942083686821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>32</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6013019333081665053.post-2815213987614083565</id><published>2024-07-07T13:30:00.000-07:00</published><updated>2025-05-31T20:24:37.304-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cpra"/><category scheme="http://www.blogger.com/atom/ns#" term="GLBA"/><category scheme="http://www.blogger.com/atom/ns#" term="Kafka"/><category scheme="http://www.blogger.com/atom/ns#" term="kafka-connect"/><category scheme="http://www.blogger.com/atom/ns#" term="single-message-transform"/><title type='text'>Kafka Privacy Toolkit Part 1: Protect PII data using a custom single message transform.</title><summary type="text">Introduction


  Kafka is a highly scalable and durable distributed streaming platform that
    has become the go-to choice for handling large amounts of data across a
    variety of industries.&amp;nbsp;Its ecosystem of services is vast and powerful, enabling businesses to
    solve complex problems and uncover insights from their data in
    real-time.&amp;nbsp;


  One of the key services in the Kafka</summary><link rel='replies' type='application/atom+xml' href='https://ferozedaud.blogspot.com/feeds/2815213987614083565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://ferozedaud.blogspot.com/2024/07/kafka-privacy-toolkit-part-1-protect.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/2815213987614083565'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/2815213987614083565'/><link rel='alternate' type='text/html' href='https://ferozedaud.blogspot.com/2024/07/kafka-privacy-toolkit-part-1-protect.html' title='Kafka Privacy Toolkit Part 1: Protect PII data using a custom single message transform.'/><author><name>Feroze Daud</name><uri>http://www.blogger.com/profile/02314158942083686821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSXy_X5W7y5XPZy0VE6dXReuSQX4KzknUxVljT-1ukRaWyZpscLoHNJXX4_MeAezZ9-t4iF-YwkXGFqAl3XFVOwEcTpMVpXaYRb86r5yeSttNsUfG-FbtGwqpywewdzxny12wlqmMJW8VmcZpRNkY6-3GCjT0g_GyOPc43Z5w9r1R00UwMtd9vSyNYKbM/s72-w174-h174-c/Designer.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6013019333081665053.post-3409593284628258701</id><published>2024-06-06T13:51:00.000-07:00</published><updated>2025-05-31T21:00:23.129-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apache"/><category scheme="http://www.blogger.com/atom/ns#" term="Avro"/><category scheme="http://www.blogger.com/atom/ns#" term="Enum"/><title type='text'>How to add new values to an avro Enum in a backward compatible manner</title><summary type="text">Introduction

                
    


  Apache Avro
  Apache Avro is the leading serialization format for record data, and first choice for streaming data pipelines. It offers excellent schema evolution.
      In this article, we discuss how to author Avro enums so that data written with
  the new version of the schema can be read by consumers using the previous
  version of the schema. In other </summary><link rel='replies' type='application/atom+xml' href='https://ferozedaud.blogspot.com/feeds/3409593284628258701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://ferozedaud.blogspot.com/2024/06/authoring-avro-enums-for-extensibility.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/3409593284628258701'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/3409593284628258701'/><link rel='alternate' type='text/html' href='https://ferozedaud.blogspot.com/2024/06/authoring-avro-enums-for-extensibility.html' title='How to add new values to an avro Enum in a backward compatible manner'/><author><name>Feroze Daud</name><uri>http://www.blogger.com/profile/02314158942083686821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyBQ4xBHYkBRlzLY6ZZ8vAe55kRW979kUX0DXXH191_XpXd0nLYRwGAXzjX5SO_3Oryr5iY3TgID4NIfm5U4RHmUKhpk-LXincIHPuvX9WScGieVRR5eZ-dzoELC9asXvsrFA1hfrIHZiLw3p7MePA_qIp8xr4gfvxTH_DNQn1IG6sigjzO3ShiLqP7jc/s72-w117-h117-c/avro-enum.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6013019333081665053.post-8188216823624436404</id><published>2024-04-17T16:59:00.000-07:00</published><updated>2024-07-23T18:36:11.334-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apache"/><category scheme="http://www.blogger.com/atom/ns#" term="Avro"/><category scheme="http://www.blogger.com/atom/ns#" term="Kafka"/><category scheme="http://www.blogger.com/atom/ns#" term="KafkaAvroSerializer"/><title type='text'>Troubleshooting serialization errors when using Confluent KafkaAvroSerializer</title><summary type="text">IntroductionConfluent provides on-prem and hosted services of the Apache Kafka ecosystem. As part of this they also provide a custom serializer/deserializer to enable writing and reading messages with schema from a topic.

The KafkaAvroSerializer provides an efficient mechanism for serializing messages to a kafka topic.

The wire format of the KafkaAvroSerializer is described&amp;nbsp;hereSometimes, </summary><link rel='replies' type='application/atom+xml' href='https://ferozedaud.blogspot.com/feeds/8188216823624436404/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://ferozedaud.blogspot.com/2024/04/troubleshooting-serialization-errors.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/8188216823624436404'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/8188216823624436404'/><link rel='alternate' type='text/html' href='https://ferozedaud.blogspot.com/2024/04/troubleshooting-serialization-errors.html' title='Troubleshooting serialization errors when using Confluent KafkaAvroSerializer'/><author><name>Feroze Daud</name><uri>http://www.blogger.com/profile/02314158942083686821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEihj8jgfw8Qx27wBSmHB4OV6k5CdQE6ym0ePuL12y5VdEkSESXKOhAU1eBf7_Sxpj-ZzW8rmU4vR8rTzxsJ5JW_WHaa30fOttwci3WiZHKIxU7yTnMGkwmTo4yZJQqq8XaF-dIDnXwpSsEeGQre1Yc60oI84w--GtEaDkZNZLZ-ZZ5s_rnbVMW61lwzKEw=s72-w200-h200-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6013019333081665053.post-583980432629991896</id><published>2023-06-24T19:55:00.007-07:00</published><updated>2024-04-30T15:00:57.578-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ccpa"/><category scheme="http://www.blogger.com/atom/ns#" term="cpra"/><category scheme="http://www.blogger.com/atom/ns#" term="Kafka"/><category scheme="http://www.blogger.com/atom/ns#" term="kafka-connect"/><category scheme="http://www.blogger.com/atom/ns#" term="pii"/><category scheme="http://www.blogger.com/atom/ns#" term="single-message-transform"/><title type='text'>mask-json-field transform - a Kafka Connect SMT to mask out PII data from JSON fields in Kafka messages.</title><summary type="text">    
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@type&quot;: &quot;BlogPosting&quot;,
      &quot;headline&quot;: &quot;Mask Json Field Transform&quot;,
      &quot;datePublished&quot;: &quot;2023-06-24T08:00:00+08:00&quot;,
      &quot;dateModified&quot;: &quot;2023-07-0509T09:20:00+08:00&quot;,
      &quot;author&quot;: [{
          &quot;@type&quot;: &quot;Person&quot;,
          &quot;name&quot;: &quot;Feroze Daud&quot;,
          &quot;url&quot;: &quot;https://ferozedaud.blogspot.com&quot;
        }],
      &quot;abstract&quot;: &quot;</summary><link rel='replies' type='application/atom+xml' href='https://ferozedaud.blogspot.com/feeds/583980432629991896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://ferozedaud.blogspot.com/2023/06/mask-json-field-transform-kafka-connect.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/583980432629991896'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/583980432629991896'/><link rel='alternate' type='text/html' href='https://ferozedaud.blogspot.com/2023/06/mask-json-field-transform-kafka-connect.html' title='mask-json-field transform - a Kafka Connect SMT to mask out PII data from JSON fields in Kafka messages.'/><author><name>Feroze Daud</name><uri>http://www.blogger.com/profile/02314158942083686821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxRh0Unf9we-4-ZB8muMZUIoWrJ90KkSe5DlQmk3DTlNcaWyqHn4oTUk1lWHV9Zt_3nH9xmqT3z6N9CjMlrVu33bc57tc1Ij7GHlfWdhSmr0kPw4_r6-kq26hCrl8GUmEd3GKzFDlUUYbmtZKlemG9uExlIOVjMEmaDQ0hYpun5mhVCxk2oVJGUig4-kw/s72-w200-h200-c/Designer.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6013019333081665053.post-4662214840226741289</id><published>2021-12-04T15:09:00.006-08:00</published><updated>2023-07-02T18:23:49.211-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apache"/><category scheme="http://www.blogger.com/atom/ns#" term="Avro"/><category scheme="http://www.blogger.com/atom/ns#" term="Hive"/><category scheme="http://www.blogger.com/atom/ns#" term="KafkaAvroSerializer"/><category scheme="http://www.blogger.com/atom/ns#" term="KafkaConnect"/><category scheme="http://www.blogger.com/atom/ns#" term="Parquet"/><category scheme="http://www.blogger.com/atom/ns#" term="Spark"/><title type='text'>Avro Logical Types with Parquet, Hive and Spark</title><summary type="text">Avro Logical Types with Parquet, Hive and Spark


In this post, I am going to talk about the fidelity of types between Avro and big data technologies like Parquet, Hive and Spark.
    Specifically, we will discuss which logical types maintain fidelity when the data is eventually written as parquet.
    We will also include querying that data using Hive and Spark.

Avro
Apache&amp;nbsp;Avro&amp;nbsp; is a</summary><link rel='enclosure' type='text/html' href='https://ferozedaud.blogspot.com/2020/07/kafkaavroserializer-efficient-way-to.html' length='0'/><link rel='replies' type='application/atom+xml' href='https://ferozedaud.blogspot.com/feeds/4662214840226741289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://ferozedaud.blogspot.com/2021/12/avro-logical-types-with-parquet-hive_01981333308.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/4662214840226741289'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/4662214840226741289'/><link rel='alternate' type='text/html' href='https://ferozedaud.blogspot.com/2021/12/avro-logical-types-with-parquet-hive_01981333308.html' title='Avro Logical Types with Parquet, Hive and Spark'/><author><name>Feroze Daud</name><uri>http://www.blogger.com/profile/02314158942083686821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEjgC9NYFQ6beWMY-O_N6DpvQYqkgM4U08ooyRWlPw9QaCdkurFtQYfMDQwhAEq4kYyFhW62cgYppc5c2Hx1L3IvUTkGYxZOx-WhWgt2kZ_YLVMByx0vL-bAlUNZSshzehOwGzq3gRquPTO7WjUYfUunYJZnBwOC3dfxSXTOnuUiSB7NPiUUFB4ovkxk=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6013019333081665053.post-4160091491996686795</id><published>2020-07-04T23:26:00.010-07:00</published><updated>2025-03-02T11:11:07.130-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Avro"/><category scheme="http://www.blogger.com/atom/ns#" term="Kafka"/><category scheme="http://www.blogger.com/atom/ns#" term="KafkaAvroSerializer"/><title type='text'>KafkaAvroSerializer: Efficient way to serialize messages with Avro to a Kafka topic</title><summary type="text">IntroductionApache Kafka&amp;nbsp;has become the platform of choice for doing large scale messaging. It supports a variety of serialization formats for messages, and also allows integration with external systems using a wide variety of connectors.Apache Kafka allows messages to be stored in a variety of formats in the topic:- Opaque bytes.- Avro- Json- Protocol BuffersIn this post, we take a deep </summary><link rel='replies' type='application/atom+xml' href='https://ferozedaud.blogspot.com/feeds/4160091491996686795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://ferozedaud.blogspot.com/2020/07/kafkaavroserializer-efficient-way-to.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/4160091491996686795'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/4160091491996686795'/><link rel='alternate' type='text/html' href='https://ferozedaud.blogspot.com/2020/07/kafkaavroserializer-efficient-way-to.html' title='KafkaAvroSerializer: Efficient way to serialize messages with Avro to a Kafka topic'/><author><name>Feroze Daud</name><uri>http://www.blogger.com/profile/02314158942083686821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixn9rO0tKK8-JriZ2VXGRZcmJ3VmJQUSoVlZIARmvLHICTjx8Fk591R_I6b_Gy04r0mQDVcMFgMVK-u6jsrpwa2oWLzRp3q95arqOJu8u0ERO0CDwY9Kywm17iH0M2vFr0oPTK85xKxdQ/s72-c/blog1.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6013019333081665053.post-4397140310194820520</id><published>2016-10-04T19:49:00.006-07:00</published><updated>2020-08-22T19:37:07.039-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ICMP"/><category scheme="http://www.blogger.com/atom/ns#" term="Network"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="Socket"/><category scheme="http://www.blogger.com/atom/ns#" term="System.Net"/><title type='text'>Implementing a Ping client in Python - Part III</title><summary type="text">

Introduction


This is Part-3 of the N Part Series where we develop a Ping client in Python.



Implementing a Ping client in Python - Part I

Implementing a Ping client in Python - Part II



Until now, we understood the structure of the ICMP Packet, and also looked at python code to serialize and deserialize the packet from the network.



In the current installment, we will complete the </summary><link rel='replies' type='application/atom+xml' href='https://ferozedaud.blogspot.com/feeds/4397140310194820520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://ferozedaud.blogspot.com/2016/10/implementing-ping-client-in-python-part_4.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/4397140310194820520'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/4397140310194820520'/><link rel='alternate' type='text/html' href='https://ferozedaud.blogspot.com/2016/10/implementing-ping-client-in-python-part_4.html' title='Implementing a Ping client in Python - Part III'/><author><name>Feroze Daud</name><uri>http://www.blogger.com/profile/02314158942083686821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6013019333081665053.post-7529452289500337120</id><published>2016-10-03T20:55:00.001-07:00</published><updated>2020-07-13T15:18:22.129-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ICMP"/><category scheme="http://www.blogger.com/atom/ns#" term="Network"/><category scheme="http://www.blogger.com/atom/ns#" term="ping"/><category scheme="http://www.blogger.com/atom/ns#" term="Socket"/><category scheme="http://www.blogger.com/atom/ns#" term="System.Net"/><title type='text'>Implementing a Ping client in Python - Part II</title><summary type="text">


Introduction
In Implementing a Ping client in Python - Part I, we gave an introduction to Ping, and showed how it is implemented using the ICMP protocol. Specifically, it uses the ICMP Echo Request and Response mechanism. The client sends the server an ICMP Echo packet, and the server responds with an ICMP Response packet.

We also defined the python class structure of the ICMP packet.

In </summary><link rel='replies' type='application/atom+xml' href='https://ferozedaud.blogspot.com/feeds/7529452289500337120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://ferozedaud.blogspot.com/2016/10/implementing-ping-client-in-python-part.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/7529452289500337120'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/7529452289500337120'/><link rel='alternate' type='text/html' href='https://ferozedaud.blogspot.com/2016/10/implementing-ping-client-in-python-part.html' title='Implementing a Ping client in Python - Part II'/><author><name>Feroze Daud</name><uri>http://www.blogger.com/profile/02314158942083686821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6013019333081665053.post-6181784347082614517</id><published>2016-09-26T18:40:00.000-07:00</published><updated>2016-10-01T08:49:17.678-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ICMP"/><category scheme="http://www.blogger.com/atom/ns#" term="ping"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="Socket"/><title type='text'>Implementing a Ping client in Python - Part I</title><summary type="text">

Introduction

In this series of posts, &amp;nbsp;I will demonstrate how to implement a Ping client using Python.



Ping is one of the most useful tools that a computer programmer might use. It is used to figure out if a target machine is reachable or not.



Ping is implemented using the ICMP Protocol



ICMP Protocol

The Internet Control Message Protocol (ICMP) is defined by the Internet </summary><link rel='replies' type='application/atom+xml' href='https://ferozedaud.blogspot.com/feeds/6181784347082614517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://ferozedaud.blogspot.com/2016/09/implementing-ping-client-in-python-part.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/6181784347082614517'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/6181784347082614517'/><link rel='alternate' type='text/html' href='https://ferozedaud.blogspot.com/2016/09/implementing-ping-client-in-python-part.html' title='Implementing a Ping client in Python - Part I'/><author><name>Feroze Daud</name><uri>http://www.blogger.com/profile/02314158942083686821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6013019333081665053.post-6888542415743345098</id><published>2014-01-05T18:46:00.002-08:00</published><updated>2020-08-22T19:39:11.065-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="System.Net"/><title type='text'>A History of Microsoft&#39;s HTTP Client Stacks</title><summary type="text">

This article is a bit of history about the various Microsoft HTTP client stacks.



WININET

Originally, there was one - the WININET implementation, that was written for the Internet Explorer browser. The implementation for this was encapsulated in Wininet.dll. In it&#39;s original implementation (as shipped in IE 2.0/IE 3.0/IE 4.x), it supported the following protocols - HTTP, FTP, GOPHER.  It </summary><link rel='replies' type='application/atom+xml' href='https://ferozedaud.blogspot.com/feeds/6888542415743345098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://ferozedaud.blogspot.com/2014/01/a-history-of-microsofts-http-client.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/6888542415743345098'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/6888542415743345098'/><link rel='alternate' type='text/html' href='https://ferozedaud.blogspot.com/2014/01/a-history-of-microsofts-http-client.html' title='A History of Microsoft&#39;s HTTP Client Stacks'/><author><name>Feroze Daud</name><uri>http://www.blogger.com/profile/02314158942083686821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6013019333081665053.post-1105081392491740182</id><published>2011-09-04T19:52:00.001-07:00</published><updated>2020-08-22T19:50:56.770-07:00</updated><title type='text'>How to share NTLM connection across HttpWebRequest objects</title><summary type="text">
When writing an application that talks to a server using NTLM authentication, HttpWebRequest does a three legged authentication handshake that looks as follows:







Client
Server


GET / HTTP/1.1
HTTP/1.1 401 Access Denied
Connection: close
WWW-Authenticate: NTLM &amp;lt;token&amp;gt;



GET / HTTP/1.1
Authorization: NTLM &amp;lt;token1&amp;gt;

HTTP/1.1 401 Access Denied
Connection: close
WWW-Authenticate: </summary><link rel='replies' type='application/atom+xml' href='https://ferozedaud.blogspot.com/feeds/1105081392491740182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://ferozedaud.blogspot.com/2011/09/how-to-share-ntlm-connection-across.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/1105081392491740182'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/1105081392491740182'/><link rel='alternate' type='text/html' href='https://ferozedaud.blogspot.com/2011/09/how-to-share-ntlm-connection-across.html' title='How to share NTLM connection across HttpWebRequest objects'/><author><name>Feroze Daud</name><uri>http://www.blogger.com/profile/02314158942083686821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6013019333081665053.post-1876106077918510802</id><published>2011-08-09T16:32:00.001-07:00</published><updated>2020-08-22T19:50:00.346-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="RMI JMX"/><title type='text'>Diagnosing RMI Exception: java.rmi.ConnectException: Connection refused to host: 127.0.0.1</title><summary type="text">


Introduction

I have a service that runs on Linux under JBOSS. This service uses JMX (RMI) to talk to a windows box running a java service. RMI is the equivalent of the windows Distributed COM&amp;nbsp;that allows a client to invoke a method on a remote service.


Setup


My setup is as follows. I have a Linux machine (Client) that is running a Java service in Tomcat, hosted in JBOSS. It is trying</summary><link rel='replies' type='application/atom+xml' href='https://ferozedaud.blogspot.com/feeds/1876106077918510802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://ferozedaud.blogspot.com/2011/08/diagnosing-rmi-exception.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/1876106077918510802'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/1876106077918510802'/><link rel='alternate' type='text/html' href='https://ferozedaud.blogspot.com/2011/08/diagnosing-rmi-exception.html' title='Diagnosing RMI Exception: java.rmi.ConnectException: Connection refused to host: 127.0.0.1'/><author><name>Feroze Daud</name><uri>http://www.blogger.com/profile/02314158942083686821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMtfrkwAb2BQgJFMeQYtv6nr4PKTxCk_3MMWbsdrymvc0t2zoBGNv9JcY1nSe_M3VhPNk_qJ594NZ6DzOEzLCqjhcEwToMZgXHuq7Mny0lld8Y9krO1xhMg7cvITZ2_tn770xfktKR-GA/s72-c/pict1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6013019333081665053.post-2926323520134867550</id><published>2011-03-22T09:56:00.000-07:00</published><updated>2016-12-10T19:07:08.083-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="WWW HTTPS"/><title type='text'>Why isn&#39;t HTTPS used more on the web?</title><summary type="text">Ars Technica has a great article giving the reasons why HTTPS is not used more on the Web.

The summary is as follows:

1) HTTPS adds some latency to initial connection establishment.
2) HTTPS documents cannot be cached by the browser. While this is not a big issue when the client and server are on the same continents, 
3) HTTPS websites cannot be virtual hosts on the same server, and this causes</summary><link rel='replies' type='application/atom+xml' href='https://ferozedaud.blogspot.com/feeds/2926323520134867550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://ferozedaud.blogspot.com/2011/03/why-isnt-https-used-more-on-web.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/2926323520134867550'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/2926323520134867550'/><link rel='alternate' type='text/html' href='https://ferozedaud.blogspot.com/2011/03/why-isnt-https-used-more-on-web.html' title='Why isn&#39;t HTTPS used more on the web?'/><author><name>Feroze Daud</name><uri>http://www.blogger.com/profile/02314158942083686821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6013019333081665053.post-6628289847621383384</id><published>2010-06-25T15:42:00.000-07:00</published><updated>2010-06-25T15:42:43.555-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="apple"/><category scheme="http://www.blogger.com/atom/ns#" term="iphone"/><category scheme="http://www.blogger.com/atom/ns#" term="retina display"/><title type='text'>Via JonesBlog - Apples Retina Display</title><summary type="text">Brian Jones analyzes Apple&#39;s claim that the Iphone4&#39;s display resolution is better than a human eye. Interesting reading.</summary><link rel='replies' type='application/atom+xml' href='https://ferozedaud.blogspot.com/feeds/6628289847621383384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://ferozedaud.blogspot.com/2010/06/via-jonesblog-apples-retina-display.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/6628289847621383384'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/6628289847621383384'/><link rel='alternate' type='text/html' href='https://ferozedaud.blogspot.com/2010/06/via-jonesblog-apples-retina-display.html' title='Via JonesBlog - Apples Retina Display'/><author><name>Feroze Daud</name><uri>http://www.blogger.com/profile/02314158942083686821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6013019333081665053.post-1885982241824977710</id><published>2010-03-21T22:58:00.003-07:00</published><updated>2020-08-22T19:40:15.995-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="HttpWebRequest"/><category scheme="http://www.blogger.com/atom/ns#" term="System.Net"/><category scheme="http://www.blogger.com/atom/ns#" term="Tracing WebClient Multipart MIME Form Post FileUpload"/><title type='text'>Multipart Form Upload Helper for System.Net.WebClient</title><summary type="text">
Implementing Multipart-MIME upload helper using WebClient


The WebClient class is a higher level abstraction on top of HttpWebRequest, that abstracts away the common tasks of uploading files, as well as doing Form Posts to HTTP servers. However, it does not provide an easy way to do multipart form uploads.

Multipart form upload is defined by the W3C specification. 

Multipart HTML Form Design
</summary><link rel='replies' type='application/atom+xml' href='https://ferozedaud.blogspot.com/feeds/1885982241824977710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://ferozedaud.blogspot.com/2010/03/multipart-form-upload-helper.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/1885982241824977710'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/1885982241824977710'/><link rel='alternate' type='text/html' href='https://ferozedaud.blogspot.com/2010/03/multipart-form-upload-helper.html' title='Multipart Form Upload Helper for System.Net.WebClient'/><author><name>Feroze Daud</name><uri>http://www.blogger.com/profile/02314158942083686821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6013019333081665053.post-745642508742798939</id><published>2009-12-06T14:05:00.000-08:00</published><updated>2016-12-10T19:14:24.341-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SendFile"/><category scheme="http://www.blogger.com/atom/ns#" term="Socket"/><category scheme="http://www.blogger.com/atom/ns#" term="System.Net"/><category scheme="http://www.blogger.com/atom/ns#" term="TransmitFile"/><title type='text'>Socket.SendFile - Implementing fast file transfer</title><summary type="text">Implementing fast file transfer with Socket.SendFile When writing network applications, we usually have a need to implement file transfer between two hosts. For eg, imaging an FTP client, where the client is downloading or uploading a file from an FTP server. Similarly, you could be uploading an image file (probably a photo) as an attachment to a Blog or a website like Facebook or Flickr.

</summary><link rel='replies' type='application/atom+xml' href='https://ferozedaud.blogspot.com/feeds/745642508742798939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://ferozedaud.blogspot.com/2009/12/socketsendfile-implementing-fast-file.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/745642508742798939'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/745642508742798939'/><link rel='alternate' type='text/html' href='https://ferozedaud.blogspot.com/2009/12/socketsendfile-implementing-fast-file.html' title='Socket.SendFile - Implementing fast file transfer'/><author><name>Feroze Daud</name><uri>http://www.blogger.com/profile/02314158942083686821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikmM3krI7y0n7fypRcIoorhh6t1SkxxNoayL-8Pvf87YR79PHH-pIzESLhPtmNF_YS5JN_w9ocblFwOnqWnJnLBsamuZtplKbpiLiRwRW1f3g2PHYamQiXBGKMUBd9CRE33JWiw5yUFVQ/s72-c/without-sendfile.png" height="72" width="72"/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6013019333081665053.post-4731345406734264262</id><published>2009-11-15T15:45:00.001-08:00</published><updated>2020-08-22T19:40:58.874-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BinaryReader"/><category scheme="http://www.blogger.com/atom/ns#" term="BinaryWriter"/><category scheme="http://www.blogger.com/atom/ns#" term="ByteBuffer"/><category scheme="http://www.blogger.com/atom/ns#" term="DataInputStream"/><category scheme="http://www.blogger.com/atom/ns#" term="DataOutputStream"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Network"/><category scheme="http://www.blogger.com/atom/ns#" term="Socket"/><category scheme="http://www.blogger.com/atom/ns#" term="System.Net"/><title type='text'>How to send object from Java to .NET: Alternate implementation</title><summary type="text">In the last article, I described how to send an object from a Java application to a .NET application over a Socket connection.

https://ferozedaud.blogspot.com/2009/11/howto-serialize-data-from-object-from.html

The Java implementation was relying on ByteBuffer class to serialize the object in LittleEndian format that the .NET code understands.

However, it turns out that using a ByteBuffer is </summary><link rel='replies' type='application/atom+xml' href='https://ferozedaud.blogspot.com/feeds/4731345406734264262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://ferozedaud.blogspot.com/2009/11/how-to-send-object-from-java-to-net.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/4731345406734264262'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/4731345406734264262'/><link rel='alternate' type='text/html' href='https://ferozedaud.blogspot.com/2009/11/how-to-send-object-from-java-to-net.html' title='How to send object from Java to .NET: Alternate implementation'/><author><name>Feroze Daud</name><uri>http://www.blogger.com/profile/02314158942083686821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6013019333081665053.post-8214252598153156082</id><published>2009-11-15T00:34:00.000-08:00</published><updated>2009-11-15T00:34:36.678-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ByteBuffer"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Logging"/><category scheme="http://www.blogger.com/atom/ns#" term="Network"/><category scheme="http://www.blogger.com/atom/ns#" term="Socket"/><category scheme="http://www.blogger.com/atom/ns#" term="System.Net"/><title type='text'>HOWTO: Serialize data from an object from .NET to Java using custom binary formatting.</title><summary type="text">Problem: You want to send data across the network, from a .NET application to a Java application (or vice versa). The data is actually an object that you want to send over the network.

Since these are heterogenous platforms, you cannot use the Runtime specific serialization methods (for eg BinaryFormatter in .NET). You need to roll your own.

You basically have two choices. You can manually </summary><link rel='replies' type='application/atom+xml' href='https://ferozedaud.blogspot.com/feeds/8214252598153156082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://ferozedaud.blogspot.com/2009/11/howto-serialize-data-from-object-from.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/8214252598153156082'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/8214252598153156082'/><link rel='alternate' type='text/html' href='https://ferozedaud.blogspot.com/2009/11/howto-serialize-data-from-object-from.html' title='HOWTO: Serialize data from an object from .NET to Java using custom binary formatting.'/><author><name>Feroze Daud</name><uri>http://www.blogger.com/profile/02314158942083686821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6013019333081665053.post-3912447413504685362</id><published>2009-11-01T17:26:00.002-08:00</published><updated>2023-07-03T10:08:46.479-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Authentication"/><category scheme="http://www.blogger.com/atom/ns#" term="Debugging"/><category scheme="http://www.blogger.com/atom/ns#" term="ICMP"/><category scheme="http://www.blogger.com/atom/ns#" term="Logging"/><category scheme="http://www.blogger.com/atom/ns#" term="Network"/><category scheme="http://www.blogger.com/atom/ns#" term="Socket"/><category scheme="http://www.blogger.com/atom/ns#" term="System.Net"/><category scheme="http://www.blogger.com/atom/ns#" term="Tracing"/><title type='text'>DotNet Network Library Links and HOWTOs</title><summary type="text">A lot of people have blogged about System.NET tips and tricks. Esp from Microsoft, prior System.Net team members (Jon Cole, Durgaprasad Gorti, Malar Chinnusamy) have authored blog posts on how to do stuff with System.Net.

Non microsoft folks have also stepped up to the plate. For eg, Stephen Cleary has written a very good concise blog on System.Net HOWTOs and FAQs.

In this post,  I aim to </summary><link rel='replies' type='application/atom+xml' href='https://ferozedaud.blogspot.com/feeds/3912447413504685362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://ferozedaud.blogspot.com/2009/11/systemnet-links-and-howtos.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/3912447413504685362'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/3912447413504685362'/><link rel='alternate' type='text/html' href='https://ferozedaud.blogspot.com/2009/11/systemnet-links-and-howtos.html' title='DotNet Network Library Links and HOWTOs'/><author><name>Feroze Daud</name><uri>http://www.blogger.com/profile/02314158942083686821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6013019333081665053.post-1379230197265236639</id><published>2009-10-24T11:51:00.000-07:00</published><updated>2009-10-24T11:51:24.252-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Lucene"/><category scheme="http://www.blogger.com/atom/ns#" term="Search"/><title type='text'>Write your own search engine using Lucene</title><summary type="text">Recently, I have been playing around with Lucene (http://incubator.apache.org/lucene.net/. Lucene is an Open Source project, which is sponsored by the Apache foundation, that gives you all the components necessary to create your own search engine.

I downloaded the latest build, which is versioned 2.0.004 and located at http://incubator.apache.org/lucene.net/download/</summary><link rel='replies' type='application/atom+xml' href='https://ferozedaud.blogspot.com/feeds/1379230197265236639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://ferozedaud.blogspot.com/2009/10/write-your-own-search-engine-using.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/1379230197265236639'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/1379230197265236639'/><link rel='alternate' type='text/html' href='https://ferozedaud.blogspot.com/2009/10/write-your-own-search-engine-using.html' title='Write your own search engine using Lucene'/><author><name>Feroze Daud</name><uri>http://www.blogger.com/profile/02314158942083686821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6013019333081665053.post-6087566284875246349</id><published>2009-10-02T19:59:00.000-07:00</published><updated>2009-10-02T19:59:12.518-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Authentication"/><category scheme="http://www.blogger.com/atom/ns#" term="HttpWebRequest"/><category scheme="http://www.blogger.com/atom/ns#" term="NTLM"/><category scheme="http://www.blogger.com/atom/ns#" term="System.Net"/><category scheme="http://www.blogger.com/atom/ns#" term="Tracing"/><title type='text'>NTLM auth fails with HttpWebRequest/WebClient, but passes with IE</title><summary type="text">On public newsgroups, I have seen a lot of postings where people complained that their managed code application, written with HttpWebRequest, and using NTLM auth to talk to a server, would fail. However, Internet explorer running on the same machine would work fine.

Here are some of the threads that show this problem:

http://social.msdn.microsoft.com/Forums/en-US/netfxnetcom/thread/</summary><link rel='replies' type='application/atom+xml' href='https://ferozedaud.blogspot.com/feeds/6087566284875246349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://ferozedaud.blogspot.com/2009/10/ntlm-auth-fails-with.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/6087566284875246349'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/6087566284875246349'/><link rel='alternate' type='text/html' href='https://ferozedaud.blogspot.com/2009/10/ntlm-auth-fails-with.html' title='NTLM auth fails with HttpWebRequest/WebClient, but passes with IE'/><author><name>Feroze Daud</name><uri>http://www.blogger.com/profile/02314158942083686821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6013019333081665053.post-4390789571770923998</id><published>2009-09-29T18:26:00.000-07:00</published><updated>2009-09-29T18:26:39.195-07:00</updated><title type='text'>Implementing Traceroute with System.Net - Part IV</title><summary type="text">In the previous parts, I showed how to implement traceroute using System.Net.Sockets.  We used the Socket class to create a Raw socket, and use that to do a traceroute.

Implementing Traceroute with System.Net Part III
Implementing Traceroute with System.Net Part II
Implementing Traceroute with System.Net Part I

It turns out, that System.Net.NetworkInformation  already has a Ping class, that </summary><link rel='replies' type='application/atom+xml' href='https://ferozedaud.blogspot.com/feeds/4390789571770923998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://ferozedaud.blogspot.com/2009/09/implementing-traceroute-with-systemnet_29.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/4390789571770923998'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/4390789571770923998'/><link rel='alternate' type='text/html' href='https://ferozedaud.blogspot.com/2009/09/implementing-traceroute-with-systemnet_29.html' title='Implementing Traceroute with System.Net - Part IV'/><author><name>Feroze Daud</name><uri>http://www.blogger.com/profile/02314158942083686821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6013019333081665053.post-5911814825485906629</id><published>2009-09-17T18:25:00.000-07:00</published><updated>2009-09-29T16:40:04.723-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ICMP"/><category scheme="http://www.blogger.com/atom/ns#" term="Network"/><category scheme="http://www.blogger.com/atom/ns#" term="Socket"/><category scheme="http://www.blogger.com/atom/ns#" term="System.Net"/><category scheme="http://www.blogger.com/atom/ns#" term="Tracing"/><title type='text'>Implementing Traceroute with System.Net - Part III</title><summary type="text">In the previous part http://ferozedaud.blogspot.com/2009/09/implementing-traceroute-with-systemnet_07.html I showed a simple implementation of traceroute, that built upon my earlier implementation of Ping.

As promised, in this article, we will see how to make the utility more robust.

One of the things I didnt like about the previous implementation, was that there was no verification of the </summary><link rel='replies' type='application/atom+xml' href='https://ferozedaud.blogspot.com/feeds/5911814825485906629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://ferozedaud.blogspot.com/2009/09/implementing-traceroute-with-systemnet_17.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/5911814825485906629'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/5911814825485906629'/><link rel='alternate' type='text/html' href='https://ferozedaud.blogspot.com/2009/09/implementing-traceroute-with-systemnet_17.html' title='Implementing Traceroute with System.Net - Part III'/><author><name>Feroze Daud</name><uri>http://www.blogger.com/profile/02314158942083686821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6013019333081665053.post-6545468530860914064</id><published>2009-09-11T18:09:00.001-07:00</published><updated>2009-09-11T18:32:00.583-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Debugging"/><category scheme="http://www.blogger.com/atom/ns#" term="Logging"/><category scheme="http://www.blogger.com/atom/ns#" term="Network"/><category scheme="http://www.blogger.com/atom/ns#" term="Tracing"/><title type='text'>Network Programmers Toolchest</title><summary type="text">In this post, I want to talk about some of the tools that a programmer doing network programmer might want to learn, in order to do his job better.First, let us talk about logging tools. No matter which library you use, whether it is System.Net from .NET framework, or CommonsHTTP from the Apache Commons project, you need to have a way of enabling logging to see what is going on in the library.If </summary><link rel='replies' type='application/atom+xml' href='https://ferozedaud.blogspot.com/feeds/6545468530860914064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://ferozedaud.blogspot.com/2009/09/network-programmers-toolchest.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/6545468530860914064'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/6545468530860914064'/><link rel='alternate' type='text/html' href='https://ferozedaud.blogspot.com/2009/09/network-programmers-toolchest.html' title='Network Programmers Toolchest'/><author><name>Feroze Daud</name><uri>http://www.blogger.com/profile/02314158942083686821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6013019333081665053.post-728934304991483061</id><published>2009-09-10T08:55:00.000-07:00</published><updated>2024-02-08T14:37:27.398-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Authentication"/><category scheme="http://www.blogger.com/atom/ns#" term="HttpWebRequest"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="NTLM"/><category scheme="http://www.blogger.com/atom/ns#" term="System.Net"/><title type='text'>The case of multiple NTLM challenges with IIS7</title><summary type="text">A reader posed a question on Stack Overflow about a problem with authentication. The scenario was as follows:This was a typical 3-tier application, in which the middle-tier (ASP.NET web server) was making a HttpWebRequest to a backend IIS-7 server that required authentication.When authentication method was set to Digest/Basic/Negotiate, the server worked fine, and the authentication succeeded. </summary><link rel='replies' type='application/atom+xml' href='https://ferozedaud.blogspot.com/feeds/728934304991483061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://ferozedaud.blogspot.com/2009/09/case-of-multiple-ntlm-challenges-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/728934304991483061'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6013019333081665053/posts/default/728934304991483061'/><link rel='alternate' type='text/html' href='https://ferozedaud.blogspot.com/2009/09/case-of-multiple-ntlm-challenges-with.html' title='The case of multiple NTLM challenges with IIS7'/><author><name>Feroze Daud</name><uri>http://www.blogger.com/profile/02314158942083686821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>