python 基于TCP协议的套接字编程详解
基于TCP协议的套接字编程
实现电话沟通为例,这里传递的是字符,可以自己尝试去发送一个文件
#服务端 importsocket #1.符合TCP协议的手机 server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#TCP #2.绑定手机号一个服务器,我们自己的电脑作为服务器的话,用自己的IP地址 server.bind(('127.0.0.1',8000))#127.0.0.1代表本地 #server.bind(('192.168.11.251',8000)) server.listen(5)#半连接池可以同时接收5个客户端 #3.等待客户端连接 print('start...') #链接循环 whileTrue: #通信循环 conn,client_addr=server.accept() whileTrue: try: #4.收到信息receive data=conn.recv(1024)#每次接收多少字节,如果改为10,客户端输入dir,(可以在cmd中输入dir,看看会得到什么),会出现什么情况呢,下次的博客会讲到粘包问题,以及如何处理粘包问题 print(data) #5.回消息 conn.send(data.upper()) exceptConnectionAbortedError: continue exceptConnectionResetError: break
#客户端1 importsocket #1.创建符合TCP协议的手机 client=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #2.拨号 client.connect(('127.0.0.1',8000)) whileTrue: msg=input('pleaseenteryourmsg')#dir #3.发送消息 client.send(msg.encode('utf8')) #4.接收消息 data=client.recv(1024) print(data)
#客户端2 importsocket #1.创建符合TCP协议的手机 client=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #2.拨号 client.connect(('127.0.0.1',8000)) #msg=input('pleaseenteryourmsg>>>') #3.发送消息 client.send('hello'.encode('utf8')) client.send('world'.encode('utf8')) #4.接收信息 data=client.recv(1024) print(data)
模拟ssh远程执行命令(linux系统)
#ssh服务端 importsocket importsubprocess server=socket.socket(socket.AF_INET,socket.SOCK_STREAM) server.bind(('192.168.11.251',8000))#这是我的机子,客户端可以是其他人的机子 server.listen(5) print('start...') whileTrue: conn,cient_addr=server.accept() print(client_addr)#打印出的是其他人机子的IP whileTrue: try: cmd=conn.recv(1024)#dir print(cmd) #帮你执行cmd命令,然后把执行结果保存到管道里 pipeline=subprocess.Popen(cmd.decode('utf8'), shell=True, stderr=subprocess.PIPE,#std标准 stdout=subprocess.PIPE) stderr=pipeline.stderr.read() stdout=pipeline.stdout.read() conn.send(stderr) conn.send(stdout) exceptConnectionResetError: break
#ssh客户端 importsocket #1.创建符合TCP协议的手机 client=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #2.拨号 client.connect(('192.168.11.210',8000)) whileTrue: msg=input('pleaseenteryourmsg')#dir #3.发送消息 client.send(msg.encode('utf8')) #4.接收消息 data=client.recv(10) print(data.decode('gbk'))#在mac电脑上可能是'utf8'
学习最有效的方法一定是有输入,一定要输出,这样学的东西才能真正得有用
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。