go 接收发送文件
package main import (
"fmt"
"os"
"net"
"io"
) //发送文件内容
func SendFile(path string,conn net.Conn){
//以只读的方式打开文件
f,err := os.Open(path)
if err != nil{
fmt.Println("os.Open err=",err)
return
} defer f.Close() buf := make([]byte,*)
for{
n,err := f.Read(buf)
if err !=nil{
if err == io.EOF{
fmt.Println("文件传输完毕")
}else{
fmt.Println(" f.Read err=",err)
}
return
}
//发送内容
conn.Write(buf[:n])
} } func main() {
//提示输入文件
fmt.Println("请输入需要传输的文件")
var path string
fmt.Scan(&path) //获取文件名 info.Name()
info,err := os.Stat(path) if err != nil{
fmt.Println("os.Stat err= ",err)
return
} //主动连接我们的服务器
conn,err := net.Dial("tcp","127.0.0.1:8000")
if err !=nil{
fmt.Println("net.Dial err=",err)
return
} //给接收方发送文件名
_,err = conn.Write([]byte(info.Name()))
if err != nil{
fmt.Println("conn.Write err =",err)
return
} var n int
buf := make([]byte,)
n,err = conn.Read(buf)
if err !=nil{
fmt.Println("conn.Read err=",err)
return
} if "ok"== string(buf[:n]){
//发送文件内容
SendFile(path,conn)
} }
package main import (
"net"
"fmt"
"os"
"io"
)
//文件的接收操作
func RecvFile(filename string,conn net.Conn) {
//新建文件
f,err := os.Create(filename)
if err != nil{
fmt.Println("os.Create err=",err)
return
} buf := make([]byte,)
for{
n,err := conn.Read(buf) //接收对方发送过来的文件内容
if err != nil{
if err == io.EOF{
fmt.Println("文件接收完毕")
}else{
fmt.Println("conn.Read err=",err) }
return
}
if n == {
fmt.Println("n==0 文件接收完毕")
break
}
f.Write(buf[:n])
}
} func main() {
//监听
listernner,err := net.Listen("tcp","127.0.0.1:8000")
if err != nil{
fmt.Println("net.Listen err =",err)
return
}
defer listernner.Close()
//阻塞等待用户连接
conn,err := listernner.Accept()
if err != nil{
fmt.Println("listenner.Accept err=",err)
return
}
defer conn.Close() //缓冲
buf := make([]byte,) n,err := conn.Read(buf)
if err != nil{
fmt.Println("conn.Read err =",err)
return
} filename := string(buf[:n])
//回复ok
conn.Write([]byte("ok")) //接收文件内容
RecvFile(filename,conn) }
go 接收发送文件的更多相关文章
- Smack+Openfire 接收和发送文件
转载请注明出处:http://blog.csdn.net/steelychen/article/details/37958839 发送文件须要提供准确的接收放username称(例:user2@192 ...
- php发送 与接收流文件
PHP 发送与接收流文件 sendStreamFile.php 把文件以流的形式发送 receiveStreamFile.php 接收流文件并保存到本地 sendStreamFile.php < ...
- httpurlconnection发送文件到服务端并接收
httpurlconnection发送文件到服务端并接收 客户端 import java.io.DataInputStream; import java.io.File; import java.io ...
- [转]C#网络编程(订立协议和发送文件) - Part.4
本文转自:http://www.tracefact.net/CSharp-Programming/Network-Programming-Part4.aspx 源码下载:http://www.trac ...
- android开发,socket发送文件,read阻塞,得不到文件尾-1
这是我的接收文件代码:开始可以读取到-1,但是现在又读取不到了,所以才加上红色字解决的(注释的代码) File file = new File(mfilePath,"chetou." ...
- socket(TCP)发送文件
一:由于在上一个随笔的基础之上拓展的所以直接上代码,客户端: using System; using System.Collections.Generic; using System.Componen ...
- C#_Socket网络编程实现的简单局域网内即时聊天,发送文件,抖动窗口。
最近接触了C#Socket网络编程,试着做了试试(*^__^*) 实现多个客户端和服务端互相发送消息 发送文件抖动窗口功能 服务端: using System; using System.Collec ...
- 高级UIKit-09(TCPSocket发送文件、上传和下载)
[day1101_SocketSendFile]:发送文件到服务端 发送文件需要在该文件上拼接消息头,比如类型,文件名,文件大小 // 服务端 - (void)viewDidLoad { [super ...
- Windows 和 Linux下使用socket下载网页页面内容(可设置接收/发送超时)的代码
主要难点在于设置recv()与send()的超时时间,具体要注意的事项,请看代码注释部分,下面是代码: #include <stdio.h> #include <sys/types. ...
随机推荐
- [C5W3] Sequence Models - Sequence models & Attention mechanism
第三周 序列模型和注意力机制(Sequence models & Attention mechanism) 基础模型(Basic Models) 在这一周,你将会学习 seq2seq(sequ ...
- 2019年最新50道java基础部分面试题(三)
前21题请看之前的随笔 22.面向对象的特征有哪些方面 计算机软件系统是现实生活中的业务在计算机中的映射,而现实生活中的业务其实就是一个个对象协作的过程.面向对象编程就是按现实业务一样的方式将程序代码 ...
- 用vbs和ADSI管理Windows账户
ADSI (Active Directory Services Interface)是Microsoft新推出的一项技术,它统一了许多底层服务的编程接口,程序员可以使用一致的对象技术来访问这些底层服务 ...
- Python进阶小结
目录 一.异常TODO 二.深浅拷贝 2.1 拷贝 2.2 浅拷贝 2.3 深拷贝 三.数据类型内置方法 3.1 数字类型内置方法 3.1.1 整型 3.1.2 浮点型 3.2 字符串类型内置方法 3 ...
- 【linux】linux 查看物理CPU个数、核数、逻辑CPU个数
①物理cpu数:主板上实际插入的cpu数量,可以数不重复的 physical id 有几个(physical id) cat /proc/cpuinfo| grep "physical id ...
- oidc hybrid flow 与另外两种模式的异同
很多学习identityserver的文章都没有解释清楚oidc hybrid混合模式的含义.本文将解释hybrid模式与另外两种模式的主要区别. 我们先看一下一手文档: https://openid ...
- RabbitMQ的安装与使用(Centos7,linux版本)
1.主流的消息中间件简单介绍哦. 1).ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线,并且它一个完全支持jms(java message service)规范的消息中间件.其丰 ...
- 从新手小白到老手大白的成长之路第二弹-WPF之UI界面之Grid面板
废话不多说,接下来直接开始介绍WPF-UI界面-Grid面板 如图就是创建好了的一个WPF项目,整个界面被一个Window窗体包含起来,上面类似于什么什么网址什么的其实就相当于.net的命名空间,缺什 ...
- ASP.NET Core框架深度学习(四)宿主对象
11.WebHost 第六个对象 到目前为止我们已经知道了由一个服务器和多个中间件构成的管道是如何完整针对请求的监听.接收.处理和最终响应的,接下来来讨论这样的管道是如何被构建出来的.管道是在作为应 ...
- Windows Server 2012 R2更新(KB2919355)
必须按以下顺序安装这些KB:clearcompressionflag.exe,KB2919355,KB2932046,KB2959977,KB2937592,KB2938439和KB2934018. ...