Socket
TCP
  1. #!/usr/bin/python
  2.  
  3. import socket
  4.  
  5. #DNS
  6. print socket.getfqdn('www.google.com');
  7. print socket.gethostname();
  8. print socket.gethostbyname('localhost');
  9. print socket.gethostbyname('www.google.com');
  10. print socket.gethostbyname_ex('localhost');
  11. print socket.gethostbyaddr('4.2.2.2');
  12. print socket.getnameinfo((socket.gethostbyname('www.google.com'), 80), 0);
  13. print socket.getservbyname('http');
  14. print socket.getservbyport(80);
  15. print socket.getaddrinfo("www.google.com", 80, 0, 0, socket.IPPROTO_TCP)
  16. print socket.getdefaulttimeout();
  1. #server.py
  2. #!/usr/bin/python
  3.  
  4. import socket
  5.  
  6. HOST = '' # Symbolic name meaning all available interfaces
  7. PORT = 50007 # Arbitrary non-privileged port
  8.  
  9. # Create a socket
  10. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  11. s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  12. # Bind the socket to an address
  13. s.bind((HOST, PORT))
  14.  
  15. # Waiting for a connection
  16. s.listen(2)
  17. print 'Waiting for a connection ...'
  18.  
  19. while 1:
  20. # Build a connection, create a new socket to handle it, get the client address
  21. conn, addr = s.accept()
  22. print 'Connecting server at: ', conn.getsockname(),
  23. print 'from client at: ', addr
  24. try:
  25. data = conn.recv(1024)
  26. print 'Received: ', data;
  27. #if not data: break
  28. conn.sendall(data.upper())
  29. except socket.error, msg:
  30. print "Error: ", msg;
  31. break
  32. conn.close()
  1. #client.py
  2. #!/usr/bin/python
  3.  
  4. import socket
  5.  
  6. # Server address
  7. HOST = '' # The remote host
  8. PORT = 50007 # The same port as used by the server
  9.  
  10. # Create a socket
  11. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  12. s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  13.  
  14. # Build a connection
  15. s.connect((HOST, PORT))
  16.  
  17. # Read the message from keyboard
  18. m = raw_input("Eneter your message:\n");
  19. while len(m) < 1:
  20. m = raw_input("Not allow empty message, please re-input your message:\n");
  21. #m = input("Eneter your message:\n");# evaluate the string
  22.  
  23. # Send the message to server
  24. s.send(m);
  25. #s.sendall('Hello, world')
  26.  
  27. # Receive the feedback from server
  28. data = s.recv(1024)
  29. s.close()
  30.  
  31. print 'Received from server:\n', data
  32. #print 'Received:\n', repr(data)
  33.  
UDS
  1. #server.py
  2. #!/usr/bin/python
  3.  
  4. import socket
  5. import sys
  6. import os
  7.  
  8. server_address = './uds_socket'
  9.  
  10. # Make sure the socket does not already exist
  11. try:
  12. os.unlink(server_address)
  13. except OSError:
  14. if os.path.exists(server_address):
  15. raise
  16.  
  17. # Create a socket
  18. s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
  19. print 'Socket name: ', s.getsockname();
  20. s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  21. # Bind the socket to an address
  22. s.bind(server_address)
  23.  
  24. # Waiting for a connection
  25. s.listen(1)
  26. print 'Waiting for a connection ...'
  27.  
  28. while 1:
  29. # Build a connection, create a new socket to handle it, get the client address
  30. conn, addr = s.accept()
  31. print 'Connecting server at: ', conn.getsockname(),
  32. print 'from client at: ', addr
  33. try:
  34. data = conn.recv(1024)
  35. print 'Received: ', data;
  36. #if not data: break
  37. conn.sendall(data.upper())
  38. except socket.error, msg:
  39. print "Error: ", msg;
  40. break
  41. conn.close()
  1. #client.py
  2. #!/usr/bin/python
  3.  
  4. import socket
  5.  
  6. # Create a socket
  7. s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
  8. s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  9.  
  10. server_address = './uds_socket'
  11.  
  12. # Build a connection
  13. s.connect(server_address)
  14.  
  15. # Read the message from keyboard
  16. m = raw_input("Eneter your message:\n");
  17. while len(m) < 1:
  18. m = raw_input("Not allow empty message, please re-input your message:\n");
  19. #m = input("Eneter your message:\n");# evaluate the string
  20.  
  21. # Send the message to server
  22. s.send(m);
  23. #s.sendall('Hello, world')
  24.  
  25. # Receive the feedback from server
  26. data = s.recv(1024)
  27. s.close()
  28.  
  29. print 'Received from server:\n', data
  30. #print 'Received:\n', repr(data)
UDP
  1. #server.py
  2. #!/usr/bin/python
  3.  
  4. import socket;
  5.  
  6. port = 50007;
  7.  
  8. s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  9. s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  10.  
  11. s.bind(('', port))
  12.  
  13. print 'UDP server ...'
  14.  
  15. while 1:
  16. data, addr = s.recvfrom(1024)
  17. print 'server received %r from %r' % (data, addr)
  18. s.sendto(data.upper(), addr); #the socket should not be connected to a remote socket
  1. #client.py
  2. #!/usr/bin/python
  3.  
  4. import socket
  5.  
  6. # Server address
  7. HOST = '' # The remote host
  8. PORT = 50007 # the port of the server
  9.  
  10. # Create a socket
  11. s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  12. s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  13.  
  14. # Read the message from keyboard
  15. m = raw_input("Eneter your message:\n");
  16. while len(m) < 1:
  17. m = raw_input("Not allow empty message, please re-input your message:\n");
  18. #m = input("Eneter your message:\n");# evaluate the string
  19.  
  20. # Send the message to server
  21. s.sendto(m, (HOST, PORT));
  22.  
  23. # Receive the feedback from server
  24. data = s.recv(1024)
  25. s.close()
  26.  
  27. print 'Received from server:\n', data
  28. #print 'Received:\n', repr(data)
Binary Data
  1. #server.py
  2. #!/usr/bin/python
  3.  
  4. import binascii
  5. import socket
  6. import struct
  7. import sys
  8.  
  9. # Create a TCP/IP socket
  10. sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  11. server_address = ('localhost', 10000)
  12. sock.bind(server_address)
  13. sock.listen(1)
  14.  
  15. # Create Struct instance
  16. s = struct.Struct('hhl');
  17.  
  18. while True:
  19. print >>sys.stderr, '\nwaiting for a connection'
  20. connection, client_address = sock.accept()
  21. try:
  22. data = connection.recv(s.size)
  23. print >>sys.stderr, 'received "%s"' % binascii.hexlify(data)
  24.  
  25. unpacked_data = s.unpack(data)
  26. print >>sys.stderr, 'unpacked:', unpacked_data
  27. finally:
  28. connection.close();
  1. #!/usr/bin/python
  2.  
  3. import socket
  4. import struct
  5. import binascii
  6.  
  7. # Create a TCP/IP socket
  8. sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  9. server_address = ('localhost', 10000)
  10. sock.connect(server_address)
  11.  
  12. # Create Struct instance
  13. s = struct.Struct('hhl');
  14.  
  15. # Pack information
  16. packed = s.pack(1, 2, 3);#pack data into a string
  17. sock.sendall(packed)
Flow Control
  1. #server.py TCP
  2. #!/usr/bin/python
  3.  
  4. import binascii
  5. import socket
  6. import struct
  7. import sys
  8. import time
  9.  
  10. # Create a TCP/IP socket
  11. sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  12. sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  13. server_address = ('localhost', 10000)
  14. sock.bind(server_address)
  15. sock.listen(1)
  16.  
  17. # Create Struct instance
  18. s = struct.Struct('f');
  19. connection, client_address = sock.accept()
  20.  
  21. num = 0;
  22.  
  23. while True:
  24. try:
  25. data = connection.recv(s.size)
  26. unpacked_data = s.unpack(data)
  27. num += 1;
  28. print 'Received: ', num, unpacked_data
  29. time.sleep(0.01)
  30. except Exception, err:
  31. print err
  32. break;
  33.  
  34. connection.close();
  1. #client.py TCP
  2. #!/usr/bin/python
  3.  
  4. import socket
  5. import struct
  6. import binascii
  7. import random
  8.  
  9. # Create a TCP/IP socket
  10. sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  11. server_address = ('localhost', 10000)
  12. sock.connect(server_address)
  13.  
  14. # Create Struct instance
  15. s = struct.Struct('f');
  16.  
  17. num = 0;
  18.  
  19. # Pack information
  20. while True:
  21. n = random.random();
  22. packed = s.pack(n);#pack data into a string
  23. sock.sendall(packed)
  24. num += 1;
  25. print 'Sent: ', num, n
  1. #server.py UDP
  2. #!/usr/bin/python
  3.  
  4. import binascii
  5. import socket
  6. import struct
  7. import sys
  8. import time
  9.  
  10. # Create a TCP/IP socket
  11. sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  12. sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  13. server_address = ('localhost', 10000)
  14. sock.bind(server_address)
  15.  
  16. # Create Struct instance
  17. s = struct.Struct('f');
  18.  
  19. num = 0;
  20.  
  21. while True:
  22. try:
  23. data, address= sock.recvfrom(s.size)
  24. unpacked_data = s.unpack(data)
  25. num += 1;
  26. print 'Received: ', num, unpacked_data
  27. time.sleep(0.001)
  28. except Exception, err:
  29. print err
  30. break;
  1. #client.py UDP
  2. #!/usr/bin/python
  3.  
  4. import socket
  5. import struct
  6. import binascii
  7. import random
  8.  
  9. # Create a TCP/IP socket
  10. sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  11. server_address = ('localhost', 10000)
  12.  
  13. # Create Struct instance
  14. s = struct.Struct('f');
  15.  
  16. num = 0;
  17.  
  18. # Pack information
  19. while True:
  20. n = random.random();
  21. packed = s.pack(n);#pack data into a string
  22. sock.sendto(packed, server_address)
  23. num += 1;
  24. print 'Sent: ', num, n
Reference
  • Documentation