Your last example sends *TWO* GET headers, one malformed one and one normal one. It should only be sending the latter, and it should only have ONE crlf after every line but the last (if you use sockwrite -n, do not append a $crlf)
Computers don't do miracles. If you were actually sending the GET request you described above, it was *not* working in XP
In fact, what you just posted is what you should have been getting in XP with that same request. Go to your XP machine and confirm this.