通过这个实例加深对socket编程的理解
先编写客户端:
import socket
def main():
// 创建套接字
tcp__client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
dest_ip = input('请输入服务器IP:')
dest_port = int(input('请输入服务器PORT:')) // 注意转为整型
// 连接服务器
tcp_client_socket.connect((dest_ip,dest_port))
down_file_name = input('请输入需要下载的文件名字:')
// 将文件名传至服务器
tcp_client_socket.sendall(down_file_name.encode('utf-8'))
// 接收服务器返回的数据
recv_data = tcp_client_socket.recv(1024) // 1024为可接收的字节大小
// 判断是否有此文件
if recv_data:
with open("新" + down_file_name, "wb") as f:
f.write(recv_data)
else:
print('没有此文件')
// 关闭套接字
tcp_client_socket.close()
if__name__ == '__name__':
main()
接下来到服务器端了:
import socket
def send_file_2_client(client_socket, client_addr):
// 接收客户端传过来的数据
file_name = client_socket.recv(1024).decode('utf-8')
print('客户端%s需要下载的文件是%s' % (str(client_addr), file_name))
file_content = None
try:
f = open(file_name, "rb")
file_content = f.read() // 将读取到的数据存放在file_content
f.close
expect: Execpect as e:
print('没有需要下载的文件')
// 判断是否发送数据
if file_content:
client_socket.sendall(file_content)
def main():
// 创建套接字
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
// 服务器绑定端口
server_ip = ''
server_port = 10000
tcp_server_socket.bind((server_ip, server_port))
// 监听
tcp_server_socket.listen(128)
// 等待connect
client_socket, client_addr = tcp_server_socket.accept()
// 调用
send_file_2_client(client_socket, client_addr)
client_socket.close()
tcp_server_socket.close()
if __name__ == '__main__':
main()
大家实验的时候在目录下随便建个文件然后在里面随便写点东西就行了