import socket
import time
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
SEND_BUF_SIZE = 13
RECV_BUF_SIZE = 17
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.setsockopt( socket.SOL_SOCKET, socket.SO_SNDBUF, SEND_BUF_SIZE)
s.setsockopt( socket.SOL_SOCKET, socket.SO_RCVBUF, RECV_BUF_SIZE)
print s.getsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF)
print s.getsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF)
s.connect(("192.168.137.2",8080))
s.settimeout(10)
#print s.getsockopt()
print s.getsockname()
print s.getpeername()
#s.sendall("this is shutdown test" + "
")
print dir(socket.herror)
print(socket.SHUT_RDWR)
print(socket.SHUT_RD)
print(socket.SHUT_WR)
#print s.recv(90)
s.send('56789')
print s.recv(900)
C:Python27python.exe C:/Users/TLCB/PycharmProjects/untitled2/http/t5.py
17
13
('192.168.137.1', 58374)
('192.168.137.2', 8080)
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__getitem__', '__getslice__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__unicode__', '__weakref__', 'args', 'errno', 'filename', 'message', 'strerror']
2
0
1
response:56789
21:25:18.410917 IP 192.168.137.1.58374 > node1.webcache: Flags [P.], seq 1:6, ack 1, win 4, length 5 ##发送
21:25:18.411130 IP node1.webcache > 192.168.137.1.58374: Flags [P.], seq 1:15, ack 6, win 23, length 14 ##接收
20.5 PUSH标志
在每一个TCP例子中,我们都看到了PUSH标志,但一直没有介绍它的用途。发送方使用
该标志通知接收方将收到的数据全都提交给接收进程。这里的数据包括与PUSH一起传送的数据
在最初的TCP规范中,一般假定编程接口允许发送进程告诉它的TCP何时设置PUSH标志。
在一个交互程序中,当客户发送一个名称给服务器时,它设置PUSH 标志并停下来等待服务器的响应。
通过允许客户应用程序通知其TCP设置PUSH标志,客户进程通知TCP在向服务器发送一个报文段
时不要因等待额外数据而使已提交数据在缓冲中滞留。