python代码tcp连接百度_半开半闭tcp连接的Python代码

我是python新手,正在尝试创建一个测试床,在这里,客户机和服务器之间存在TCP半开半闭的情况。

服务器代码:def recv_end(the_socket):

End='SERVER WRONG MARKER'

total_data=[];data='';got_end=False

while True:

data=the_socket.recv(8192)

if not data: break

if End in data:

total_data.append(data[:data.find(End)])

got_end=True

break

total_data.append(data)

if len(total_data)>1:

#check if end_of_data was split

last_pair=total_data[-2]+total_data[-1]

if End in last_pair:

total_data[-2]=last_pair[:last_pair.find(End)]

total_data.pop()

got_end=True

break

return (got_end,''.join(total_data))

def basic_server(sock):

got=[]

got_end,data = recv_end(sock)

if not got_end:

sock.send('ERROR:no end!') #

else: sock.sendall(data*2)

sock.shutdown(1)

sock.close()

import socket

Port=4444

def start_server():

sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

sock.bind(('',Port))

sock.listen(5)

print 'started on',Port

while True:

newsock,address=sock.accept()

basic_server(newsock)

def send_data(data):

sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

sock.connect(('localhost',Port))

print 'connected'

sock.sendall(data+'CLIENT WRONG MARKER')

print 'sent',data

sock.shutdown(1)

print 'shutdown'

result=[]

while True:

got=sock.recv(2)

if not got: break

result.append(got)

sock.close()

return ''.join(result)

if __name__=='__main__':

start_server()

客户代码:

^{pr2}$

我尝试使用shutdown命令,它有三个选项:0=完成接收,1=完成发送,2=两者都有

在上面的代码集中在1。代码没有按预期工作。意思是,当我进行数据包捕获时,我看不到半开连接。有谁能提供一些技巧或例子来说明如何实现它,或者我犯了什么错误?在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值