python 网络编程socket示例(ftp上传)
我们知道上传一个文件的流程原理即将一个文件内容读取出来,在目标位置新建这个文件,再把内容写入进去。想想跟上篇文章 python 网络编程socket示例(远程ssh)类似,所不同的只是多了一个文件操作句柄,同样的也会出现黏包,使用stuct来解决黏包问题。因为代码中都写有注释,这里就不详细赘述了。
我们知道上传一个文件的流程原理即将一个文件内容读取出来,在目标位置新建这个文件,再把内容写入进去。想想跟上篇文章 python 网络编程socket示例(远程ssh)类似,所不同的只是多了一个文件操作句柄,同样的也会出现黏包,使用stuct来解决黏包问题。因为代码中都写有注释,这里就不详细赘述了。
模拟ssh需要返回ssh命令执行的结果,我们用【客户端连接.recv(字节长度)】来接收服务器传回的命令执行结果,但是这个字节长度我们无从得知,定义的如果太小则结果接收不完全,定义的太大,大的上限无法衡量不说还会浪费资源,这时候我们是否会考虑先把执行结果的长度传回给客户端,再把执行结果传回,这样就能很好的解决这个问题,但是我们要怎么操作呢?
套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。
首先,程序必须要启动,其次,必须有这台机器的地址,我们都知道我们人的地址大概就是国家\省\市\区\街道\楼\门牌号这样字。那么每一台联网的机器在网络上也有自己的地址,它的地址是怎么表示的呢?
就是使用一串数字来表示的,例如:100.4.5.6
我们了解的涉及到两个程序之间通讯的应用大致可以分为两种:
第一种是应用类:qq、微信、网盘、优酷这一类是属于需要安装的桌面应用
第二种是web类:比如百度、知乎、博客园等使用浏览器访问就可以直接使用的应用
这些应用的本质其实都是两个程序之间的通讯。而这两个分类又对应了两个软件开发的架构~