返回列表[(family, socktype, proto, canonname, sockaddr)]
服务端(linux系统上运行,赋予权限)
# Echo server program
import socket
import sys
HOST = None # Symbolic name meaning all available interfaces
PORT = 50007# Arbitrary non-privileged ports = None
for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC,
socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
af, socktype, proto, canonname, sa = res
try:
s = socket.socket(af, socktype, proto)
except socket.error as msg:
s = None
continue
try:
s.bind(sa)
s.listen(1)
except socket.error as msg:
s.close()
s = None
continuebreakifs is None:
print'could not open socket'
sys.exit(1)
conn, addr = s.accept()
print'Connected by', addr
while1:
data = conn.recv(4096)
ifnot data: break
conn.send(data)
conn.close()
客户端
# Echo client programimport socket
import sys
HOST = '192.168.88.103'# The remote host
PORT = 50007# The same port as used by the server
s = Nonefor res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM):
af, socktype, proto, canonname, sa = res
try:
s = socket.socket(af, socktype, proto)
except socket.error as msg:
s = Nonecontinuetry:
s.connect(sa)
except socket.error as msg:
s.close()
s = Nonecontinuebreakif s isNone:
print'could not open socket'
sys.exit(1)
s.sendall('Hello, world')
data = s.recv(4096)
s.close()
print'Received', repr(data)
简介例子源自官方手册:Python官方手册socket 以下例子同时支持IPv4和IPv6注意事项:服务端必须获得权限,最好在linux系统上运行服务端服务端(linux系统上运行,要赋予权限)# Echo server programimport socketimport sysHOST = None # Symbolic name meaning all available in