#socket 的 API 文档
socket.recv(bufsize[, flags])
Receive data from the socket. The return value is a string representing the data received. The maximum amount of data to be received at once is specified by bufsize. See the Unix manual page recv(2) for the meaning of the optional argument flags; it defaults to zero.
这里说 return value is a string representing 是什么意思?如下的程序,客户端为什么 print data 打印出的是乱码,这个不是 ASCII 码表示的 510 吗?
-------------------------------------客户端-------------------------
# Echo server program
import socket
HOST = '' # Symbolic name meaning all available interfaces
PORT = 50007 # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
data = conn.recv(1024)
if not data: break
conn.sendall(data)
conn.close()
---------------------------------服务器端--------------------------------------
# Echo client program
import socket
HOST = '127.0.0.1' # The remote host
PORT = 50007 # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.sendall('\x05\x01\x00')
data = s.recv(1024)
s.close()
print data
print 'Received', repr(data)
1
hahastudio 2016-05-26 10:08:42 +08:00 1
1. The return value is a string representing the data received.
返回值是一个字符串,表示接收的数据 2. https://en.wikipedia.org/wiki/ASCII 你的输入在 ASCII 里是 Enquiry, Start of Heading, Null 。 如果你想提供字面量 510 作为输入,请 sendall("510") 或者 sendall("\x35\x31\x30") |
2
sujin190 2016-05-26 21:11:57 +08:00 1
再去查查 ascii 表吧,哪里发送 510 了
|
3
xcc7624 OP 这样啊明白了
|