socket shutdown选项

Shut down one or both halves of the connection. If how is SHUT_RD, further receives are disallowed. If how is SHUT_WR, further sends are disallowed. If how is SHUT_RDWR, further sends and receives are disallowed. Depending on the platform, shutting down one half of the connection can also close the opposite half (e.g. on Mac OS X, shutdown(SHUT_WR) does not allow further reads on the other end of the connection).

Note that there are no methods read() or write(); use recv() and send() without flags argument instead.

关闭一个或者一半的连接 如果socket.shutdown(how)
如果how值是SHUT_RD,则不允许进步接收 


如果how是SHUT_WR ,则不允许发送 

如果how 是SHUT_RDWR,接下来发和手都不允许

此时能从服务端读取数据

import socket
import time
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("192.168.137.2",8888))
#print s.getsockopt()
print s.getsockname()
print s.getpeername()
#s.sendall("this is shutdown test" + "
")
s.send('8888777')

print dir(socket.herror)
#print dir(socket.herror)
# s.shutdown(socket.SHUT_RDWR)
#s.shutdown(socket.SHUT_RDWR)
print(socket.SHUT_RDWR)
print(socket.SHUT_RD)
print(socket.SHUT_WR)
#print s.recv(90)
s.shutdown(0)
time.sleep(10)
print s.recv(90)
s.send('8888777')

# while (1==1):
#     print s.recv(90)




此时能从服务端读取数据,


import socket
import time
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("192.168.137.2",8888))
#print s.getsockopt()
print s.getsockname()
print s.getpeername()
#s.sendall("this is shutdown test" + "
")
s.send('8888777')

print dir(socket.herror)
#print dir(socket.herror)
# s.shutdown(socket.SHUT_RDWR)
#s.shutdown(socket.SHUT_RDWR)
print(socket.SHUT_RDWR)
print(socket.SHUT_RD)
print(socket.SHUT_WR)
#print s.recv(90)
s.shutdown(1)
time.sleep(10)
print s.recv(90)
time.sleep(10)
s.send('8888777')

# while (1==1):
#     print s.recv(90)


原文地址:https://www.cnblogs.com/hzcya1995/p/13348564.html