saitor / ping-pong

Make a simple ping pong game for 2 players
0 stars 0 forks source link

[New] Familiar with Python programming #2

Open saitor opened 8 years ago

saitor commented 8 years ago

Description

Requirements:

  1. Set up your own Python environment.
  2. Familiar with Python script
  3. Create a window by Python
  4. Use Python to write server/client socket programs to transfer file via TCP or UDP.
saitor commented 8 years ago

Client example

# Echo Client in 10/30/2015 by Saitor
import socket
import sys
# Create a TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Connect the socket to the port where the server is listening
server_address = ('localhost', 10000)
print >>sys.stderr, 'connecting to %s port %s' % server_address
sock.connect(server_address)
try:
    # Send data
    message = 'This is the message. It will be repeated.'
    print >>sys.stderr, 'sending "%s"' % message
    sock.sendall(message)
    # Look for the response
    amount_received = 0
    amount_expected = len(message)
    while amount_received < amount_expected:
        data = sock.recv(16)
        amount_received += len(data)
        print >>sys.stderr, 'received "%s"' % data
finally:
    print >>sys.stderr, 'closing socket'
    sock.close()

Server example

# Echo sever in 10/30/2015 by Saitor
import socket
import sys
# Create a TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Bind the socket to the port
server_address = ('localhost', 10000)
print >>sys.stderr, 'starting up on %s port %s' % server_address
sock.bind(server_address)
# Listen for incoming connections
sock.listen(1)
while True:
        # Wait for a connection
        print >>sys.stderr, 'waiting for a connection'
        connection, client_address = sock.accept()
        try:
            print >>sys.stderr, 'connection from', client_address
            # Recevie the data in small chunks and retransmit it
            while True:
                data = connection.recv(16)
                print >>sys.stderr, 'received "%s"' % data
                if data:
                   print >>sys.stderr, 'sending data back to the client'
                   connection.sendall(data)
                else:
                   print >>sys.stderr, 'no more data from', client_address
                   break
        finally:
            # Clean up the connection
            connection.close()