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. ...
随机推荐
- Java Web 学习(6) —— Spring MVC 之校验器
Spring MVC 之校验器 数据验证 一个典型的 Spring MVC 应用会同时应用到 formatters/converters 和 validators. 在调用 controller 期间 ...
- LG4377 「USACO2018OPEN」Talent Show 分数规划+背包
问题描述 LG4377 题解 有 \(n\) 个物品,每个物品有两个权值 \(a,b\) 需要确定一组 \(w_i \in [0,1]\) ,使得 \(\frac{\sum{w_i \times a_ ...
- 【Excel】对比两列值
- 第04组 Beta冲刺(1/5)
队名:new game 组长博客:戳 作业博客:戳 组员情况 鲍子涵(队长) 过去两天完成了哪些任务 验收游戏素材 学习Unity 2D Animation系统 接下来的计划 制作游戏需要的人物动画 ...
- HTML连载42-清空默认边距、文字行高
一. webstorm取色技巧:webstorm内置了颜色取色器,我们对某种颜色未知的时候,可以利用下图中的取色器,进行颜色识别. 二.系统会默认给body添加外边距,因此我们对 ...
- linux下用sox音频处理常用方法
一 sox可以给pcm文件加头 方法:sox -t raw -c 1 -e signed-integer -b 16 -r 16000 test.pcm test.wav 二 修改采样率: 方法: s ...
- 《细说PHP》第四版 样章 第23章 自定义PHP接口规范 7
23.5 创建RESTful规范 WebAPI框架 虽然我们现在可以自己实现API了,也了解了RESTful API的设计原则,但让自己实现的API符合RESTful API规范,对很多刚接触API ...
- IT兄弟连 Java语法教程 算符运算符
Java提供了丰富的运算符环境.可以将大部分Java运算符划分为4组:算术运算符.位运算符.关系运算符以及逻辑运算符.Java还定义了一些用于处理某些特定情况的附加运算符.本章将介绍除类型比较运算符i ...
- PHP】获取客户端(浏览器)信息、获取客户端系统信息、获取服务器信息
* 获取客户端浏览器信息 * @param null * @author https://blog.jjonline.cn/phptech/168.html * @return string */ f ...
- 【计算机网络】HTTPS协议的传输细节及过程分析
1. 介绍一下HTTPS协议? 1.1 基本概念 http默认采用80作为通讯端口,对于传输采用不加密的方式,https默认采用443,对于传输的数据进行加密传输. 1.2 密码学基础 明文: 明文指 ...