服務器端:gevent_server.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | import ?sys import ?socket import ?time import ?gevent from ?gevent? import ?socket, monkey monkey.patch_all() def ?server(port): ???? s? = ?socket.socket() ???? s.bind(( '0.0.0.0' , port)) ???? s.listen( 500 ) ???? while ?True : ???????? cli, addr? = ?s.accept() ???????? gevent.spawn(handle_request, cli) #啟動一個協程 def ?handle_request(conn): ???? try : ???????? while ?True : ???????????? data? = ?conn.recv( 1024 ) ???????????? print ( "recv:" , data) ???????????? conn.send(data) ???????????? if ?not ?data: ???????????????? conn.shutdown(socket.SHUT_WR) ???? except ?Exception as? ex: ???????? print (ex) ???? finally : ???????? conn.close() if ?__name__? = = ?'__main__' : ???????? server( 8001 ) ?客戶端:socket_client.py
|
import
?sys
import
?socket
import
?time
import
?gevent
from
?gevent?
import
?socket, monkey
monkey.patch_all()
def
?server(port):
????
s?
=
?socket.socket()
????
s.bind((
'0.0.0.0'
, port))
????
s.listen(
500
)
????
while
?True
:
????????
cli, addr?
=
?s.accept()
????????
gevent.spawn(handle_request, cli)
#啟動一個協程
def
?handle_request(conn):
????
try
:
????????
while
?True
:
????????????
data?
=
?conn.recv(
1024
)
????????????
print
(
"recv:"
, data)
????????????
conn.send(data)
????????????
if
?not
?data:
????????????????
conn.shutdown(socket.SHUT_WR)
????
except
?Exception as? ex:
????????
print
(ex)
????
finally
:
????????
conn.close()
if
?__name__?
=
=
?'__main__'
:
????????
server(
8001
)