Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
06fd5f8c
Kaydet (Commit)
06fd5f8c
authored
Kas 08, 2008
tarafından
Benjamin Peterson
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
fix the socketserver demo code for py3k
#4275 Thanks to Don MacMillen
üst
ef6a19e3
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
38 additions
and
30 deletions
+38
-30
udpecho.py
Demo/sockets/udpecho.py
+2
-1
unixclient.py
Demo/sockets/unixclient.py
+1
-1
socketserver.rst
Doc/library/socketserver.rst
+29
-28
ACKS
Misc/ACKS
+1
-0
NEWS
Misc/NEWS
+5
-0
No files found.
Demo/sockets/udpecho.py
Dosyayı görüntüle @
06fd5f8c
...
@@ -56,7 +56,8 @@ def client():
...
@@ -56,7 +56,8 @@ def client():
line
=
sys
.
stdin
.
readline
()
line
=
sys
.
stdin
.
readline
()
if
not
line
:
if
not
line
:
break
break
s
.
sendto
(
line
,
addr
)
print
(
'addr = '
,
addr
)
s
.
sendto
(
bytes
(
line
,
'ascii'
),
addr
)
data
,
fromaddr
=
s
.
recvfrom
(
BUFSIZE
)
data
,
fromaddr
=
s
.
recvfrom
(
BUFSIZE
)
print
(
'client received
%
r from
%
r'
%
(
data
,
fromaddr
))
print
(
'client received
%
r from
%
r'
%
(
data
,
fromaddr
))
...
...
Demo/sockets/unixclient.py
Dosyayı görüntüle @
06fd5f8c
...
@@ -6,7 +6,7 @@ from socket import *
...
@@ -6,7 +6,7 @@ from socket import *
FILE
=
'unix-socket'
FILE
=
'unix-socket'
s
=
socket
(
AF_UNIX
,
SOCK_STREAM
)
s
=
socket
(
AF_UNIX
,
SOCK_STREAM
)
s
.
connect
(
FILE
)
s
.
connect
(
FILE
)
s
.
send
(
'Hello, world'
)
s
.
send
(
b
'Hello, world'
)
data
=
s
.
recv
(
1024
)
data
=
s
.
recv
(
1024
)
s
.
close
()
s
.
close
()
print
(
'Received'
,
repr
(
data
))
print
(
'Received'
,
repr
(
data
))
Doc/library/socketserver.rst
Dosyayı görüntüle @
06fd5f8c
...
@@ -336,8 +336,8 @@ This is the server side::
...
@@ -336,8 +336,8 @@ This is the server side::
def handle(self):
def handle(self):
# self.request is the TCP socket connected to the client
# self.request is the TCP socket connected to the client
self.data = self.request.recv(1024).strip()
self.data = self.request.recv(1024).strip()
print
"%s wrote:" % self.client_address[0]
print
("%s wrote:" % self.client_address[0])
print
self.data
print
(self.data)
# just send back the same data, but upper-cased
# just send back the same data, but upper-cased
self.request.send(self.data.upper())
self.request.send(self.data.upper())
...
@@ -360,8 +360,8 @@ objects that simplify communication by providing the standard file interface)::
...
@@ -360,8 +360,8 @@ objects that simplify communication by providing the standard file interface)::
# self.rfile is a file-like object created by the handler;
# self.rfile is a file-like object created by the handler;
# we can now use e.g. readline() instead of raw recv() calls
# we can now use e.g. readline() instead of raw recv() calls
self.data = self.rfile.readline().strip()
self.data = self.rfile.readline().strip()
print
"%s wrote:" % self.client_address[0]
print
("%s wrote:" % self.client_address[0])
print
self.data
print
(self.data)
# Likewise, self.wfile is a file-like object used to write back
# Likewise, self.wfile is a file-like object used to write back
# to the client
# to the client
self.wfile.write(self.data.upper())
self.wfile.write(self.data.upper())
...
@@ -385,14 +385,14 @@ This is the client side::
...
@@ -385,14 +385,14 @@ This is the client side::
# Connect to server and send data
# Connect to server and send data
sock.connect((HOST, PORT))
sock.connect((HOST, PORT))
sock.send(
data + "\n"
)
sock.send(
bytes(data + "\n","utf8")
)
# Receive data from the server and shut down
# Receive data from the server and shut down
received = sock.recv(1024)
received = sock.recv(1024)
sock.close()
sock.close()
print
"Sent: %s" % data
print
("Sent: %s" % data)
print
"Received: %s" % received
print
("Received: %s" % received)
The output of the example should look something like this:
The output of the example should look something like this:
...
@@ -401,18 +401,18 @@ Server::
...
@@ -401,18 +401,18 @@ Server::
$ python TCPServer.py
$ python TCPServer.py
127.0.0.1 wrote:
127.0.0.1 wrote:
hello world with TCP
b'hello world with TCP'
127.0.0.1 wrote:
127.0.0.1 wrote:
python is nice
b'python is nice'
Client::
Client::
$ python TCPClient.py hello world with TCP
$ python TCPClient.py hello world with TCP
Sent: hello world with TCP
Sent: hello world with TCP
Received:
HELLO WORLD WITH TCP
Received:
b'HELLO WORLD WITH TCP'
$ python TCPClient.py python is nice
$ python TCPClient.py python is nice
Sent: python is nice
Sent: python is nice
Received:
PYTHON IS NICE
Received:
b'PYTHON IS NICE'
:class:`socketserver.UDPServer` Example
:class:`socketserver.UDPServer` Example
...
@@ -433,13 +433,13 @@ This is the server side::
...
@@ -433,13 +433,13 @@ This is the server side::
def handle(self):
def handle(self):
data = self.request[0].strip()
data = self.request[0].strip()
socket = self.request[1]
socket = self.request[1]
print
"%s wrote:" % self.client_address[0]
print
("%s wrote:" % self.client_address[0])
print
data
print
(data)
socket.sendto(data.upper(), self.client_address)
socket.sendto(data.upper(), self.client_address)
if __name__ == "__main__":
if __name__ == "__main__":
HOST, PORT = "localhost", 9999
HOST, PORT = "localhost", 9999
server = socketserver.UDPServer((HOST, PORT),
BaseUDPRequest
Handler)
server = socketserver.UDPServer((HOST, PORT),
MyUDP
Handler)
server.serve_forever()
server.serve_forever()
This is the client side::
This is the client side::
...
@@ -447,7 +447,7 @@ This is the client side::
...
@@ -447,7 +447,7 @@ This is the client side::
import socket
import socket
import sys
import sys
HOST, PORT = "localhost"
HOST, PORT = "localhost"
, 9999
data = " ".join(sys.argv[1:])
data = " ".join(sys.argv[1:])
# SOCK_DGRAM is the socket type to use for UDP sockets
# SOCK_DGRAM is the socket type to use for UDP sockets
...
@@ -455,11 +455,11 @@ This is the client side::
...
@@ -455,11 +455,11 @@ This is the client side::
# As you can see, there is no connect() call; UDP has no connections.
# As you can see, there is no connect() call; UDP has no connections.
# Instead, data is directly sent to the recipient via sendto().
# Instead, data is directly sent to the recipient via sendto().
sock.sendto(
data + "\n"
, (HOST, PORT))
sock.sendto(
bytes(data + "\n","utf8")
, (HOST, PORT))
received = sock.recv(1024)
received = sock.recv(1024)
print
"Sent: %s" % data
print
("Sent: %s" % data)
print
"Received: %s" % received
print
("Received: %s" % received)
The output of the example should look exactly like for the TCP server example.
The output of the example should look exactly like for the TCP server example.
...
@@ -481,7 +481,7 @@ An example for the :class:`ThreadingMixIn` class::
...
@@ -481,7 +481,7 @@ An example for the :class:`ThreadingMixIn` class::
def handle(self):
def handle(self):
data = self.request.recv(1024)
data = self.request.recv(1024)
cur_thread = threading.current_thread()
cur_thread = threading.current_thread()
response =
"%s: %s" % (cur_thread.get_name(), data
)
response =
bytes("%s: %s" % (cur_thread.getName(), data),'ascii'
)
self.request.send(response)
self.request.send(response)
class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
...
@@ -492,7 +492,7 @@ An example for the :class:`ThreadingMixIn` class::
...
@@ -492,7 +492,7 @@ An example for the :class:`ThreadingMixIn` class::
sock.connect((ip, port))
sock.connect((ip, port))
sock.send(message)
sock.send(message)
response = sock.recv(1024)
response = sock.recv(1024)
print
"Received: %s" % response
print
("Received: %s" % response)
sock.close()
sock.close()
if __name__ == "__main__":
if __name__ == "__main__":
...
@@ -506,23 +506,24 @@ An example for the :class:`ThreadingMixIn` class::
...
@@ -506,23 +506,24 @@ An example for the :class:`ThreadingMixIn` class::
# more thread for each request
# more thread for each request
server_thread = threading.Thread(target=server.serve_forever)
server_thread = threading.Thread(target=server.serve_forever)
# Exit the server thread when the main thread terminates
# Exit the server thread when the main thread terminates
server_thread.set
_d
aemon(True)
server_thread.set
D
aemon(True)
server_thread.start()
server_thread.start()
print
"Server loop running in thread:", t.get_name(
)
print
("Server loop running in thread:", server_thread.getName()
)
client(ip, port, "Hello World 1")
client(ip, port,
b
"Hello World 1")
client(ip, port, "Hello World 2")
client(ip, port,
b
"Hello World 2")
client(ip, port, "Hello World 3")
client(ip, port,
b
"Hello World 3")
server.shutdown()
server.shutdown()
The output of the example should look something like this::
The output of the example should look something like this::
$ python ThreadedTCPServer.py
$ python ThreadedTCPServer.py
Server loop running in thread: Thread-1
Server loop running in thread: Thread-1
Received:
Thread-2: Hello World 1
Received:
b"Thread-2: b'Hello World 1'"
Received:
Thread-3: Hello World 2
Received:
b"Thread-3: b'Hello World 2'"
Received:
Thread-4: Hello World 3
Received:
b"Thread-4: b'Hello World 3'"
The :class:`ForkingMixIn` class is used in the same way, except that the server
The :class:`ForkingMixIn` class is used in the same way, except that the server
...
...
Misc/ACKS
Dosyayı görüntüle @
06fd5f8c
...
@@ -435,6 +435,7 @@ Martin von L
...
@@ -435,6 +435,7 @@ Martin von L
Andrew I MacIntyre
Andrew I MacIntyre
Tim MacKenzie
Tim MacKenzie
Nick Maclaren
Nick Maclaren
Don MacMillen
Steve Majewski
Steve Majewski
Grzegorz Makarewicz
Grzegorz Makarewicz
Ken Manheimer
Ken Manheimer
...
...
Misc/NEWS
Dosyayı görüntüle @
06fd5f8c
...
@@ -23,6 +23,11 @@ Build
...
@@ -23,6 +23,11 @@ Build
- Issue #1656675: Register a drop handler for .py* files on Windows.
- Issue #1656675: Register a drop handler for .py* files on Windows.
Tools/Demos
-----------
- Demos of the socketserver module now work with Python 3.
What's New in Python 3.0 release candidate 2
What's New in Python 3.0 release candidate 2
============================================
============================================
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment