#Mumps, 114 115 Bytes
Mumps, 114 115 Bytes
Golfed:
R P F{S J=0,I="|TCP|1" O I:(:P) U I R K F K=1:1:4{S J=J+$P(##class(%SYSTEM.TCPDevice).PeerAddr(),".",K)} W J,! C I} Ungolfed:
R P ; Read Port # from STDIN ; F{ ; Loop over everything; S J=0, ; Initial IP segment total I="|TCP|1" ; TCP device O I:(:P) ; Open the TCP device, port from input {and sticking a tongue out! :-) } U I ; Use the TCP device R K ; Read from STDIN (anything) F K=1:1:4{ ; Iterate 1->4 in variable K S J=J+ ; Accumulate the following segments of the IP in var. J $P(##class(%SYSTEM.TCPDevice).PeerAddr(),".",K) ; Grab each piece of IPv4. } ; close the loop. W J,! ; Write the total w/newline out the TCP port C I ; close the TCP port to send. } ; end final loop This is the InterSystems Caché version of Mumps - if there's a version out there that can acquire the TCP address shorter than ##class(%SYSTEM.TCPDevice).PeerAddr() (as it's almost a 1/3 of the entire program) it might have a better chance against some of the other languages posted already... ;-)
Edit: Thanks to @TimmyD - I missed the reading of the port from STDIN or arguments instead of being hardcoded. Edited; it added 1 byte to the program.