Vous êtes sur la page 1sur 12

2 Modelo Cliente 

Servidor
Example: Python Client (TCP)
from socket import *
serverName = ’servername’
create TCP socket for serverPort = 12000
server, remote port 12000
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName,serverPort))
sentence = raw_input(‘Input lowercase sentence:’)
No need to attach server
name, port
clientSocket.send(sentence)
modifiedSentence = clientSocket.recv(1024)
print ‘From Server:’, modifiedSentence
clientSocket.close()
Example: Python Server (TCP)

from socket import *


create TCP welcoming serverPort = 12000
socket serverSocket = socket(AF_INET,SOCK_STREAM)
serverSocket.bind((‘’,serverPort))
server begins listening for
incoming TCP requests serverSocket.listen(1)
print ‘The server is ready to receive’
loop forever
while True:
server waits on accept() connectionSocket, addr = serverSocket.accept()
for incoming requests, new
socket created on return
sentence = connectionSocket.recv(1024)
read bytes from socket (but
not address as in UDP) capitalizedSentence = sentence.upper()
close connection to this connectionSocket.send(capitalizedSentence)
client (but not welcoming connectionSocket.close()
socket)
Example: Python Client (UDP)
include Python’s socket
library from socket import *
serverName = ‘hostname’
serverPort = 12000
create UDP socket for clientSocket = socket(socket.AF_INET,
server
get user keyboard socket.SOCK_DGRAM)
input message = raw_input(’Input lowercase sentence:’)
Attach server name, port to
message; send into socket
clientSocket.sendto(message,(serverName, serverPort))
read reply characters from modifiedMessage, serverAddress =
socket into string
clientSocket.recvfrom(2048)
print out received string print modifiedMessage
and close socket
clientSocket.close()
Example: Python Server (UDP)

create UDP socket from socket import *


serverPort = 12000
serverSocket = socket(AF_INET, SOCK_DGRAM)
bind socket to local port
number 12000 serverSocket.bind(('', serverPort))
print “The server is ready to receive”
loop forever while True:
Read from UDP socket into
message, getting client’s
message, clientAddress = serverSocket.recvfrom(2048)
address (client IP and port) modifiedMessage = message.upper()
send upper case string serverSocket.sendto(modifiedMessage, clientAddress)
back to this client
Sample Python Module
Problem: remote debugging
- Need to report errors, print values, etc.
- Log files not always desirable
Permissions issues
Remote viewing often difficult
Maintenance (rotation, etc.) issues

Solution: messages as UDP datagrams
Output Module
def spew(msg, host='localhost', port=PORT):
s = socket.socket((socket.AF_INET,socket.SOCK_DGRAM))
s.bind(('', 0))
while msg:
s.sendto(msg[:BUFSIZE], (host, port))
msg = msg[BUFSIZE:]

Creates a datagram (UDP) socket


Sends the message
- In chunks if necessary
Input Module
def bucket(port=PORT, logfile=None):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(('', port))
print 'waiting on port: %s' % port
while True:
try:
data, addr = s.recvfrom(BUFSIZE)
print data[1:-1]
except socket.error, msg:
print msg

An infinite loop, printing out received messages
A Day/Time Client Script
A Day/Time Server Script
A Two‐Way Chat Script
Server creates a socket and enters an infinite loop to 
accept/handle clients; when one connects, it sends a 
greeting, and enters loop to chat with client
A Two‐Way Chat Script
Client:
- Sets up a socket 
- After connection, receives and displays greeting
- Then, enters a loop to chat with server

Vous aimerez peut-être aussi