【转】TcpListener和tcpclient使用

前段时间公司项目中遇着需要做文件的远程传输,场景是用户通过网页选择一些文件,然后提交请求到服务器,同时把请求标识传递给本机的TCP文件传输端;服务器收到请求后在服务器端创建任务生成保存文件的路径同时通知文件传输端开始传文件到服务器,当时是同事用C++写的传输端,于是便想何不用NET来实现呢,本来服务端的大部分程序和客户端程序都是用NET写的,于是便有了这篇文章。小生一直是做web开发的,对WinForm技术不胜熟悉,如有不妥还请拍砖。

在NET框架下可以方便的使用tcplistener和tcpclient两个类来实现tcp编程,而无需直接操作socket,这也是这两个类方便的地方。对于tcplistener可以理解是用在服务端的,仅需要设置一个监听端口即可,如

var listener = new TcpListener(9000);//监听9000端口

然后调用 Start方法开始监听:

 listener.Start(10);//挂起队列最大长度10个

再然后就是等待客户端的接入了,通常可以用一个无限循环来接受不断请求的客户端

while (true)
 {
        if (listener.Pending())//异步接受一个请求

       {
         var client=  listener.AcceptTcpClient();

   //现在就可以使用client,爱干嘛干嘛吧

       }
}

在这里,为了实现多个客户端同时访问通常会使用异步的BeginAcceptTcpClient来接受客户端请求

有了client,通过GetStream方法就得到当前的网络流,使用Write,Read方法即可进行数据写入和读取。

对于tcpclient,使用的时候您需要告诉他去连接哪台计算机的哪个端口(使用Endpoint来表示),然后调用Connect方法,就像下面这样

var  _endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"),9000);
var client = new TcpClient();
client.Connect(_endPoint);

如果服务端是开启的,这样就能连接上了。

下一步就是读取或者发送数据到服务端了,同样可以使用GetStream方法获取到网络流,使用Write,Read方法即可进行数据写入和读取。

这些操作都是基于流进行的,因此数据本身不具有结构,比如对于一个操作,服务端需要知道操作名和操作数据,这两个东西放在流里一起发送过去没有人会认识,这就要求服务端和客户端在传递数据的时候遵循一致的数据结构,比如使用这样的 method:getname#parms:ky 

现在介绍下本篇附带的实例:

在服务端启动的时候会要求用户输入一个共享的文件夹路径,然后启动服务,这个服务会提供给客户端这个文件夹下的图片文件列表,同时也可以让客户端下载图片;

客户端启动时要求用户输入一个服务端的地址,然后点击getfilelist来获取远程文件夹的文件列表,然后选择一个文件即可下载这个文件到本地。

部分截图:

服务端

客户端

源文件下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437115.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sleep期间读取所有_ceph部分数据所有副本先后故障的抢救

半天河网易游戏高级运维工程师,主要负责云存储的运维;一个既希望跟业务聊又喜欢能够默默在后面忙活的普通运维人。背景故障现场故障恢复故障恢复分析第一种方式:物理磁盘对拷第二种方式:服务启动时跳过故障扇区来避免异常退出解决…

【转】有限状态机用法教程

如博文无法正常显示,请访问原文地址: https://blog.csdn.net/ChinarCSDN/article/details/82263126 有限状态机用法教程 文章目录 有限状态机用法教程 [toc]1Finite-state machine —— 有限状态机2Foreword —— 前言()3Example —— 示例4Moltimode —…

通用usb集线器驱动_多口充电、高速传输——ORICO晶锐系列7口集线器测评

随着笔电越来越薄,机身接口数量越来越少,U盘、存储卡、移动硬盘、鼠标、蓝牙适配器等明显感觉无处可插,因此USB集线器就成为笔电的最佳拍档。近期,ORICO(奥睿科)推出了一款晶锐系列7口集线器产品,它集成了7个USB3.0接口…

【转】状态机思路在程序设计中的应用

状态机思路在单片机程序设计中的应用 状态机的概念 状态机是软件编程中的一个重要概念。比这个概念更重要的是对它的灵活应用。在一个思路清晰而且高效的程序中,必然有状态机的身影浮现。 比如说一个按键命令解析程序,就可以被看做状态机:本…

【转】超详细的UML状态图符号,初学者也能轻松看懂状态图

UML状态图,用于显示状态机,即描述一个对象所处的可能状态以及状态之间的转移。用状态图建模可以帮助开发人员分析复杂对象的各种状态的转换,以及对象何时执行怎样的动作。那状态图又是怎样表示这些信息的呢?要想看明白其中的奥妙&…

舒尔特注意力训练表格_舒尔特注意力训练,舒尔特方格练习入口

孩子的注意力是否集中,直接影响孩子的上课效率和作业正确率,最终影响学习成绩。道理大家都懂,关键是如何保证注意力的集中。接下来,我给大家推荐一个简单方便在家就能完成的训练方法,把它比作小游戏也不为过。那就是舒…

nginx文件系统大小_Nginx 了解一下?

这篇文章主要简单的介绍下 Nginx 的相关知识,主要包括以下几部分内容:Nginx 适用于哪些场景?为什么会出现 Nginx?Nginx 优点Nginx 的编译与配置Nginx 适用于哪些场景?如图所示,一个请求会先经过 Nginx 到达…

存储过程排版工具_安利一款比Evernote更为实用的云笔记工具,不容错过

作为一个爱分享的自媒体人,出于工作和兴趣前前后后接触到的云笔记工具很多,例如:有道云笔记、为知笔记、语雀、印象笔记、oneNote...在笔记工具的使用上还是略有点点心得,今天给大家分享一款实用的云笔记工具——Baklib&#xff0…

【转】有限状态机(FSM)学习总结C#

FSM(Finite State Machine有限状态机)可以理解成是对行为逻辑的抽象,就好象人在生活中会做出各种行为,例如吃饭、睡觉等,这些所有我们都看作是“行为”的分支,由大脑决定每种行为具体是什么实施。在整个FSM…

【转】[完全免费] 在线UML Sequence Diagram 时序图工具 - 教程第3部分

时序图教程 甲序列图描述了一组对象之间的相互作用参与协作(或情况),布置成按时间顺序; 它通过它们的“生命线”和它们发送给对方的消息来显示参与交互的对象。 什么是UML中的序列图? UML序列图是详细说明如何执行操作的交互图。…

【转】[完全免费] 在线UML Class Diagram 类图工具 - 教程第1部分

在线Visual Paradigm - UML编辑器 使用在线UML编辑器轻松绘制UML图,其中包含功能强大的UML编辑工具,即时UML语法检查和整洁的用户界面。Visual Paradigm在线UML 图,如类,用例,序列,活动,部署&a…

python 定时器_python 线程之四:定时器(Timer),非阻塞

线程之一讲了线程,如果不熟悉,可以点击【线程之一:线程的创建、启动及运行方式】1、定时器实质:Timer 定时器源码实现,和我们自定义一个线程方式一样,都是继承了 Thread 类,重写了 run() 方法&a…

人如何认知事物?

自然界是连续的,人类将自然界离散化成一个个独立的概念,独立的概念相互关联,形成模型,随着模型的完善,模型会不断逼近真实事物。 比如人类创造了各种学科,就是从不同的方面深入研究世界的结果。 所以&…

域内定位个人PC的三种方式(1)

会话搜集 在cmd下调用query session命令可以获得当前环境下的windows会话 NetSessionEnum 这个函数不允许直接查询是谁登陆,但是它允许查询是谁在访问此工作站的网络资源时所创建的网络会话,从而知道来自何处,此函数不需要高权限即可查询 第…

02.Teams组成概述及使用分享

在上一篇博客中介绍了Teams的前世今生,大家对Teams已经有了一个初步的认识,但是如上一篇文章中所说Teams是一个集成度很高的云协作平台,具体应该怎么去有效的利用起来呢?接下来这篇博客给大家全方位的分享一下Teams的组成部分以及…

【Qt】解决GDAL直接读取数据到QImage导致图像歪斜的问题

QRect intersect_rect; .... QImage img(intersect_rect.size(), QImage::Format_RGB888); uchar *pImageData (unsigned char *)img.constBits(); int img_width intersect_rect.width(); int img_height intersect_rect.height();// QImage每行是按照sizeof(int)对齐的&am…

高斯课堂数电讲义笔记_【法考经验贴】40岁三战主观题127分!他的笔记学习法助他逆袭!...

这位学员在考证界算是“高龄学员”,高分过关依赖于他的努力和正确的学习方法;本文中他有重点介绍自己是如何做笔记的,非常值得大家学习借鉴!一、个人概况:三战法考我正值不惑之年,是一名在职基层人民警察&a…

【转】持续交付和DevOps的前世今生

作者/分享人:乔梁,20年IT老兵,腾讯公司高级管理顾问,敏捷和精益开发专家,持续交付领域先行者。曾就职于百度,国内多个知名互联网公司的企业教练。 历年QCon技术大会的讲师和专题出品人。 这是一个新概念风起…

关联规则挖掘算法_基于Apriori关联规则的协同过滤算法

Apriori 算法apriori关联规则算法的原理设计较为简单,著名的“啤酒和尿布”说的就是Apriori算法,通俗来讲apriori旨在寻找频繁项集,以帮助商家将消费者有可能一起搭配购买的物品放置在同一个地方,提高消费者的购物效率和良好的购物…