C#里面的socket编程,以下是我写的一个简单里面,是用户客户端接收服务端文件用的。

参考了msdn官网里面的例子(tcp聊天例子);本人菜鸟,写的不好请见谅。

https://docs.microsoft.com/zh-cn/dotnet/api/system.net.sockets.tcplistener?view=net-5.0https://docs.microsoft.com/zh-cn/dotnet/api/system.net.sockets.tcpclient?view=net-5.0

首先百度一些socket的概念,如下(具体我不太懂)

Socket【套接字】
用于两个程序之间通信,描述IP地址和port端口号。
根据通信质量和效率要求,分为几种协议传输数据。

(1)TCP协议
TCP是一种面向连接的、可靠的,基于字节流的传输层通信协议。这种协议确保了数据传输的可靠性,但是效率比较低。

(2)UDP协议
UDP是一种简单的、面向数据报的无连接的协议。这种协议虽然不能提供可靠的数据传输,但是效率很高。

下面开始写tcp传输文件的例子代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;
using System.IO;namespace SocketTest2
{/// <summary>/// 服务器端/// </summary>class Program{static void Main(string[] args){Console.WriteLine("Server Listening");TcpListener listener = null;try{listener = new TcpListener(IPAddress.Parse("127.0.0.1"), 50012);listener.Start();while (true){TcpClient client = listener.AcceptTcpClient();if (client.Connected){Console.WriteLine("client connected");FileStream fstream = new FileStream("D:\\SocketTest2\\bin\\testmo.txt", FileMode.Open, FileAccess.Read);NetworkStream networksm = client.GetStream();int readSize = 0;long fileLength = 0;while (fileLength < fstream.Length){byte[] bff = new byte[1024];readSize= fstream.Read(bff, 0, bff.Length);networksm.Write(bff, 0, readSize);fileLength += readSize;}//end while send file//close client and streamfstream.Flush();networksm.Flush();fstream.Close();networksm.Close();client.Close();Console.WriteLine("file has already send to client");}}//end while listen }catch (Exception ex){Console.WriteLine(ex.Message);}finally{if (listener != null) {listener.Stop();}}Console.ReadKey();Console.WriteLine("Process END");}}}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Net;
using System.Net.Sockets;namespace SocketClient2
{/// <summary>/// 客户端/// </summary>class Program{static void Main(string[] args){Console.WriteLine("TCP Client begin to receive");TcpClient client = null;try{client = new TcpClient("127.0.0.1", 50012);if (client.Connected){NetworkStream networksm = client.GetStream();string dirPath =AppDomain.CurrentDomain.BaseDirectory + "\\WebFile";if (Directory.Exists(dirPath) == false) {Directory.CreateDirectory(dirPath);}dirPath += "\\testmo.txt";FileStream fstream = new FileStream(dirPath, FileMode.Create, FileAccess.Write);int readSize = 0;byte[] bff = new byte[1024];while (  ( readSize= networksm.Read(bff , 0 , bff.Length)) > 0){fstream.Write(bff, 0, readSize);}//end while write network new file//close tcp connectionfstream.Flush();fstream.Close();networksm.Flush();networksm.Close();Console.WriteLine("receive file success");}}catch (Exception ex){Console.WriteLine(ex.Message);}finally{if (client != null){client.Close();}}Console.ReadKey();Console.WriteLine("client end process");}}}

备注:

(1)代码里面的ip地址  127.0.0.1 代表本机(localhost);大家可以在内网中测试不同的IP地址。内网中的IP地址要可以互相ping通才行。

(2)发送或者接收文件数据的时候,定义了一个固定长度的byte[ ]  数组,由于不同文件的大小是不同的,有的几KB,有的几MB , 所以要用while语句循环将stream 处理。

TcpListener和TcpClient传输文件相关推荐

  1. 【转】TcpListener和tcpclient使用

    前段时间公司项目中遇着需要做文件的远程传输,场景是用户通过网页选择一些文件,然后提交请求到服务器,同时把请求标识传递给本机的TCP文件传输端:服务器收到请求后在服务器端创建任务生成保存文件的路径同时通 ...

  2. c# 客户端 服务器传输文件,通过TCP在C++客户端/ C#服务器之间传输文件

    我目前正尝试通过TCP在C++客户端和C#服务器之间发送jpeg图片流. 我在C++端使用transmitFile函数,但我不知道我是否在C#端正确处理它. 我没有得到运行时错误,但图片没有显示,所以 ...

  3. java如何实现tcp传输图像_如何在java中实现TCP服务器和TCP客户端传输文件

    我实现了简单的TCP服务器和TCP客户端类,可以从客户端发送消息到服务器,消息将在服务器端转换为大写,但是如何实现从服务器到客户端的传输文件,并从客户端上传文件到服务器.以下代码是我所得到的. TCP ...

  4. qt向服务器传输文字_使用Qt实现客户端服务端聊天和传输文件

    [实例简介] 使用Qt实现客户端服务端聊天和传输文件,带有ui设计界面 [实例截图] [核心代码] TcpFile └── TcpFile ├── TcpClient │   ├── TcpClien ...

  5. Linux系统管理必备知识之利用ssh传输文件

    在使用SSH时候,有时我们需要传输文件,这就需要用到命令scp. 从服务器上下载文件 scp username@servername:/path/filename /local_dir(本地目录) e ...

  6. tftp:timeout问题解决 - 从Windows传输文件到开发板

    通过串口工具ping一下主机,确定是否能ping通,确保通信无问题,如下 ping通后,确保PC tftp软件打开, 检查防火墙是否关闭,专用网络是家庭网络,允许同网段下的数据传输,无需关闭,因此只需 ...

  7. 使用nc传输文件和目录【转】

    方法1,传输文件演示(先启动接收命令) 使用nc传输文件还是比较方便的,因为不用scp和rsync那种输入密码的操作了 把A机器上的一个rpm文件发送到B机器上 需注意操作次序,receiver先侦听 ...

  8. linux cp sync,通过SSH使用Rsync传输文件,复制和同步文件及目录

    在本文中,我们将解释如何通过SSH使用rsync复制文件.当涉及在网络上的系统之间传输文件时,Linux和Unix用户可以使用许多工具,最流行的数据传输协议是SSH和FTP,虽然FTP很受欢迎,但总是 ...

  9. 用 Dubbo 传输文件?被老板一顿揍

    以下文章来源方志朋的博客,回复"666"获面试宝典 公司之前有一个 Dubbo 服务,其内部封装了腾讯云的对象存储服务 SDK,目的是统一管理这种三方服务的SDK,其他系统直接调用 ...

最新文章

  1. java容器有哪些如何使用_Java容器有哪些?
  2. 教你如何在面试中用「10分钟快速分析」一款产品
  3. 字符指针(子串个数统计)
  4. linux系统下tar/gz/7z/xz/bz2/zip等各种格式的打包压缩解压
  5. 设置linux的console为串口【转】
  6. java 从控制台输入/读取 四种方法 实现+原理
  7. hash hmac java_认证加密算法php hash_hmac和java hmacSha1的问题
  8. 从文本中随机选择百万行
  9. 那些你可能不知道的 bilibili 奇技淫巧
  10. Unity的Carte Blanche简介
  11. 液金显示器台式计算机耗电量,记笔记本CPU开盖换液金经过
  12. 智慧工地-未来工地新形态
  13. 【操作系统】进程和线程调度
  14. 关于www.baidu.com无法打开的问题
  15. 深入浅出地理解STM32中的中断系统——从原理到简单工程示例——保姆级教程
  16. OpenWrt系统下挂载阿里云盘提供webDAV服务再用kodi打造家庭影院
  17. 王道考研b站操作系统、计算机组成原理、计算机网络课程(课件资料)
  18. centos7:麒麟开源堡垒机的搭建部署
  19. C语言:36人分配36块砖
  20. 第四章利用恶意软件网络识别攻击活动(下)

热门文章

  1. 基于CTP的程序化交易系统开发(一)
  2. idea2020.1.2 激活频繁失效问题分析与解决
  3. 《分布式服务框架原理与实践》读书笔记
  4. 标准字头密码体制c语言,密码 实验1 打印
  5. VVC/H.266参考软件VTM算法描述 [译](一. CTU划分部分)
  6. Termux 安装openSsh
  7. Matlab R2022a安装后出现“License Manager Error -8”(已解决)
  8. 【知识点总结】-《C陷阱与缺陷》
  9. UltraWinGrid冻结列和dataGridView冻结列
  10. 【Go 学习笔记】5 - Go 函数