Aqui está uma pequena implementação do que você quer em Python (execute como server.py <port>
:
#!/usr/bin/env python
import socket
import sys
_, port = sys.argv
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(("0.0.0.0", int(port)))
sock.listen(1)
while True:
conn, addr = sock.accept()
ip, port = addr
conn.send(ip.encode("ascii") + b"\n")
conn.close()
$ ./server.py 1234 &
[1] 20315
$ nc localhost 1234
127.0.0.1
$