Merge lp:~nelsondovale/walls/walls into lp:walls

Proposed by Nelson do Vale
Status: Needs review
Proposed branch: lp:~nelsondovale/walls/walls
Merge into: lp:walls
Diff against target: 152 lines (+132/-0)
4 files modified
prototypes/server/client.py (+21/-0)
prototypes/server/server.py (+88/-0)
prototypes/server/server2.py (+10/-0)
prototypes/server/server3.py (+13/-0)
To merge this branch: bzr merge lp:~nelsondovale/walls/walls
Reviewer Review Type Date Requested Status
isacvale Approve
Review via email: mp+327934@code.launchpad.net

Description of the change

Creating the game server.

To post a comment you must log in.
Revision history for this message
isacvale (isac) :
review: Approve

Unmerged revisions

3. By Nelson do Vale

Incluindo primeira versão do servidor.
Apenas um script que permite três mensagens entre servidor e cliente.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added directory 'prototypes/server'
2=== added file 'prototypes/server/client.py'
3--- prototypes/server/client.py 1970-01-01 00:00:00 +0000
4+++ prototypes/server/client.py 2017-07-23 19:38:45 +0000
5@@ -0,0 +1,21 @@
6+import socket
7+import sys
8+
9+server_address = ('localhost',10000)
10+s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
11+
12+print('Conectando a {} porta {}'.format(*server_address), file=sys.stderr)
13+s.connect(server_address)
14+
15+while True:
16+ message = input("Send message:")
17+ outgoing_data = message.encode()
18+ print('{}: sending {!r}'.format(s.getsockname(),outgoing_data), file=sys.stderr)
19+ s.send(outgoing_data)
20+ data=s.recv(1024)
21+ print(data.decode("utf-8"))
22+ if not data:
23+ print('closing', s.getsockname(), file=sys.stderr)
24+ s.close()
25+
26+
27
28=== added file 'prototypes/server/server.py'
29--- prototypes/server/server.py 1970-01-01 00:00:00 +0000
30+++ prototypes/server/server.py 2017-07-23 19:38:45 +0000
31@@ -0,0 +1,88 @@
32+import select
33+import socket
34+import sys
35+import queue
36+import json
37+
38+#Criar socket TCP/IP
39+server = socket.socket()
40+server.setblocking(0)
41+server_address = ('localhost', 10000)
42+print('starting up on {} port {}'.format(*server_address),file=sys.stderr)
43+server.bind(server_address)
44+server.listen(5)
45+
46+
47+inputs = [server]
48+outputs = []
49+message_queues = {}
50+
51+def get_response(data):
52+ data = parse_message(data)
53+ respostas = {
54+ 'lista':'João, Pedro, Maria, Leonardo',
55+ 'movepeao':'Peão morreu',
56+ 'moverainha':'Você Venceu',
57+ }
58+ if data not in respostas:
59+ resposta = "Não entendi, por favor, use "+",".join(respostas.keys())
60+ else:
61+ resposta = respostas[data]
62+ return str.encode(resposta)
63+
64+
65+
66+def parse_message(data):
67+ data = data.decode("utf-8")
68+ #data = json.loads(data)
69+ return data
70+
71+while inputs:
72+ print('Aguardando o próximo evento', file=sys.stderr)
73+ readable,writable,exceptional = select.select(inputs,outputs,inputs)
74+
75+ for s in readable:
76+ if s is server:
77+ (connection, client_address) = s.accept()
78+ print(' connection from', client_address, file=sys.stderr)
79+ connection.setblocking(0)
80+ inputs.append(connection)
81+ message_queues[connection] = queue.Queue()
82+ else:
83+ data = s.recv(1024)
84+ print(s)
85+ if data:
86+ response = get_response(data)
87+ print(' received {!r} from {}'.format(data, s.getpeername()), file=sys.stderr)
88+ message_queues[s].put(response)
89+ if s not in outputs:
90+ outputs.append(s)
91+ else:
92+ print(' closing', client_address, file=sys.stderr)
93+ if s in outputs:
94+ outputs.remove(s)
95+ inputs.remove(s)
96+ s.close()
97+
98+ del message_queues[s]
99+
100+ for s in writable:
101+ try:
102+ next_msg = message_queues[s].get_nowait()
103+ except queue.Empty:
104+ print(' ',s.getpeername(),'queue empty', file=sys.stderr)
105+ outputs.remove(s)
106+ else:
107+ print(' sending {!r} to {}'.format(next_msg, s.getpeername()),file=sys.stderr)
108+ s.send(next_msg)
109+
110+
111+ for s in exceptional:
112+ print('exception condition on', s.getpeername(), file=sys.stderr)
113+ inputs.remove(s)
114+ if s in outputs:
115+ outputs.remove(s)
116+ s.close()
117+ del message_queues[s]
118+ print(readable, writable)
119+
120
121=== added file 'prototypes/server/server2.py'
122--- prototypes/server/server2.py 1970-01-01 00:00:00 +0000
123+++ prototypes/server/server2.py 2017-07-23 19:38:45 +0000
124@@ -0,0 +1,10 @@
125+import socket
126+
127+s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
128+s.bind((socket.gethostname(),80))
129+s.listen(5)
130+
131+while True:
132+ (clientsocket, address) = s.accept()
133+ ct=client_thread(clientsoket)
134+ ct.run()
135
136=== added file 'prototypes/server/server3.py'
137--- prototypes/server/server3.py 1970-01-01 00:00:00 +0000
138+++ prototypes/server/server3.py 2017-07-23 19:38:45 +0000
139@@ -0,0 +1,13 @@
140+import socket # Import socket module
141+
142+s = socket.socket() # Create a socket object
143+host = socket.gethostname() # Get local machine name
144+port = 12345 # Reserve a port for your service.
145+s.bind((host, port)) # Bind to the port
146+
147+s.listen(5) # Now wait for client connection.
148+while True:
149+ c, addr = s.accept() # Establish connection with client.
150+ print( 'Got connection from', addr)
151+ c.send(b'Thank you for connecting') # Send bytes
152+ c.close() # Close the connection

Subscribers

People subscribed via source and target branches

to all changes: