python网络编程学习笔记

python网络编程学习笔记

多用途客户端协议
一、ftp
功能:上传下载文件,删除命名文件,建立删除目录,自动压缩,保存目录
1.代码:

#coding=utf-8
'''连接远程ftp服务器,显示问候语,并打印当前工作目录'''
from ftplib import FTP

f = FTP('ftp.ibiblio.org')
print "Welcome:", f.getwelcome()
f.login()#匿名登陆

print "CWD:", f.pwd()
f.quit()

运行结果:

D:\python\python.exe E:/code/python/chap4/connect.py
Welcome: 220 ProFTPD Server
CWD: /

Process finished with exit code 0

2.以ascii形式下载文件
ftp以两种形式传输文件,ASCII和二进制文件
代码1:

#coding=utf-8

from ftplib import FTP

def writeline(data):
    fd.write(data + "\n")

#f = FTP('ftp.kernel.org')
f=FTP('ftp.ibiblio.org')
f.login()

f.cwd('/pub/linux/kernel')#在远处系统转换目录
fd = open('README', 'wt')
f.retrlines('RETR README', writeline)
#开始传输,第一个参数指定一个在远程系统运行的命令,后一个文件名;第二个参数是函数,客户端每收到一行数据运行一次函数;
#如果省略,数据会被输出到标准输出设备上。
fd.close()

f.quit()

运行结果:

README文件:
README for kernel

What you’ll find here: kernel sources and patches

注:使用python实现一个基于socket的c/s模式文件传输程序。出现error: [Errno 10061]错误。查找资料提示是”目标机器积极拒绝连接”。
原因说法不过有3种:
检查目的地址或端口号书写出错。
人工检查一下代码便可排除。
目标防火墙未关闭。
使用ping命令,验证目标是否有回应,必要时可用telnet,nmap等工具尝试验证目标端口开放情况。
软件或网络状况原因。
查看python是否有联网权限,当前网络是否畅通等。
3.以二进制形式下载文件
代码:

#coding=utf-8

from ftplib import FTP

f = FTP('ftp.ibiblio.org')
f.login()

f.cwd('/pub/linux/kernel')
fd = open('README', 'wb')
f.retrbinary('RETR README', fd.write)
#retrbinary()向指定的函数输出整块数据
fd.close()

f.quit()

4.以高级形式下载文件
ntransfercmd()函数,了解传输文件细节;
代码:

#coding=utf-8

from ftplib import FTP
import sys

f = FTP('ftp.ibiblio.org')
f.login()

f.cwd('/pub/linux/kernel')
#向服务器传输一条指令,检差有没有错
f.voidcmd("TYPE I")#TYPE I表示以二进制模式传输
#retrbinary()会在后台自动执行下载指令,nsransfercmd()不会
datasock, estsize = f.ntransfercmd("RETR README")
transbytes = 0
fd = open('README', 'wb')
while 1:
    buf = datasock.recv(2048)
    if not len(buf):
        break
    fd.write(buf)
    transbytes += len(buf)
    sys.stdout.write("Received %d " % transbytes)

    if estsize:
        sys.stdout.write("of %d bytes (%.1f%%)\r" % \
                (estsize, 100.0 * float(transbytes) / float(estsize)))
    else:
        sys.stdout.write("bytes\r")
    sys.stdout.flush()
sys.stdout.write("\n")
fd.close()
datasock.close()
f.voidresp()#获得服务器响应,报错


f.quit()

运行结果:

D:\python\python.exe E:/code/python/chap4/advbinarydl.py
Received 70 of 70 bytes (100.0%)

Process finished with exit code 0

5.上传数据
storbinary() read(),storlines() readline()

#coding=utf-8

from ftplib import FTP
import sys, getpass, os.path

host, username, localfile, remotepath = sys.argv[1:]
password = getpass.getpass("Enter password for %s on %s: " % \
        (username, host))
f = FTP(hos
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于Python Socket服务器,以下是一些基本的学习笔记: 1. 创建Socket服务器 使用Python中的`socket`模块创建Socket服务器,可以使用`socket()`函数来创建一个Socket对象,如下所示: ```python import socket # 创建一个Socket对象 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) ``` 其中,第一个参数`AF_INET`表示使用IPv4地址族,第二个参数`SOCK_STREAM`表示使用TCP协议,如果使用UDP协议,则应该使用`SOCK_DGRAM`。 2. 绑定Socket服务器 在创建Socket对象之后,需要使用`bind()`方法将Socket对象和一个IP地址及端口号绑定在一起,如下所示: ```python # 绑定IP地址和端口号 server_socket.bind(('127.0.0.1', 8888)) ``` 其中,`bind()`方法的参数是一个元组,第一个元素是IP地址,第二个元素是端口号。 3. 监听Socket服务器 在绑定IP地址和端口号之后,需要使用`listen()`方法开始监听Socket服务器,如下所示: ```python # 开始监听 server_socket.listen(5) ``` 其中,`listen()`方法的参数表示最大连接数,即同时可以连接的客户端数量。 4. 接受客户端连接 当有客户端连接到Socket服务器时,需要使用`accept()`方法来接受客户端连接,如下所示: ```python # 接受客户端连接 client_socket, client_address = server_socket.accept() ``` 其中,`accept()`方法返回一个元组,第一个元素是客户端的Socket对象,第二个元素是客户端的IP地址和端口号。 5. 接收和发送数据 客户端连接到Socket服务器之后,就可以进行数据的接收和发送了,使用`recv()`方法接收客户端发送的数据,使用`send()`方法向客户端发送数据,如下所示: ```python # 接收客户端数据 data = client_socket.recv(1024) # 发送服务器数据 client_socket.send(b'Hello, client!') ``` 其中,`recv()`方法的参数表示接收数据的最大字节数,`send()`方法的参数是要发送的数据,需要将其转换为字节串。 6. 关闭Socket服务器 当与客户端的通信完成后,需要使用`close()`方法关闭Socket服务器,如下所示: ```python # 关闭Socket服务器 server_socket.close() ``` 以上是关于Python Socket服务器的一些基本学习笔记,希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值