tcp连接到服务器传输文件,基于TCP Socket的文件传输:正确接收和保存文件

我正在尝试创建文件共享程序。到目前为止,连接和文件传输部分都被照顾到了。但我目前在如何正确接收和保存文件时遇到问题。基于TCP Socket的文件传输:正确接收和保存文件

我可以成功接收文件当且仅当我将在服务器端指定它的名称和扩展名。现在我的问题是,如何检索文件的名称和扩展名,以便我可以在服务器上成功接收文件?我的意思是,我不想每次收到文件时都指定一个名称。这可能吗?我正在考虑通过另一个网络流发送文件名,但我想有更好的方法来做到这一点。

在此先感谢!

下面是错误的屏幕截图。

服务器端代码

While True

Dim c As TcpClient = server.AcceptTcpClient

Dim s As NetworkStream = c.GetStream

FileOpen(1, filePath, OpenMode.Binary)

Dim buffer(1024 - 1) As Byte

Do While True

Dim bytesRead As Integer = s.Read(buffer, 0, buffer.Length)

If bytesRead = 0 Then Exit Do

FilePut(1, buffer)

Loop

FileClose(1)

s.Close()

c.Close()

End While

客户端代码

Dim nstm As Stream = cli.GetStream()

Dim fstm As Stream = New FileStream(filePath, FileMode.Open, FileAccess.Read)

Dim buffer(1024 - 1) As Byte

Do While True

Dim bytesRead As Integer = fstm.Read(buffer, 0, buffer.Length)

If bytesRead = 0 Then Exit Do

nstm.Write(buffer, 0, bytesRead)

Loop

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python3可以使用socket模块实现基于TCP协议的客户/服务器的网络文件传输程序。下面是一个简单的示例: 服务器端程序: ``` import socket def server(): # 创建socket对象 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定IP和端口 server_ip = '127.0.0.1' server_port = 8888 server_socket.bind((server_ip, server_port)) # 开启监听 server_socket.listen(5) print('服务器已启动,等待连接...') while True: # 接受客户端连接请求 client_socket, client_address = server_socket.accept() print('客户端已连接:', client_address) # 接收文件名 file_name = client_socket.recv(1024).decode() print('接收到的文件名:', file_name) # 打开文件并读取内容 try: with open(file_name, 'rb') as file: data = file.read() client_socket.sendall(data) print('文件传输成功') except FileNotFoundError: client_socket.sendall(b'file not found') print('文件不存在') # 关闭连接 client_socket.close() if __name__ == '__main__': server() ``` 客户端程序: ``` import socket def client(): # 创建socket对象 client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 连接服务器 server_ip = '127.0.0.1' server_port = 8888 client_socket.connect((server_ip, server_port)) # 发送文件名 file_name = 'test.txt' client_socket.send(file_name.encode()) # 接收文件内容 data = client_socket.recv(4096) if data == b'file not found': print('文件不存在') else: # 将文件内容写入本地文件 with open('received_file.txt', 'wb') as file: file.write(data) print('文件传输成功') # 关闭连接 client_socket.close() if __name__ == '__main__': client() ``` 以上程序实现了一个简单的基于TCP协议的网络文件传输程序。服务器端监听客户端连接请求,接收客户端发送的文件名,根据文件名读取文件内容并发送给客户端。客户端连接服务器后发送文件名,接收服务器发送的文件内容,并将文件内容写入本地文件

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值