前言

  • TCPClient与TCPListener是对socket的一层封装
  • 使用起来更加方便
  • 他们用NetworkStream类表示网络,使用GetStream方法返回网络流,然后调用read和get方法
  • NetworkStream 不拥有协议类的基础套接字,因此关闭它并不影响套接字。
  • UdpClient 类使用字节数组保存 UDP 数据文报。使用 Send 方法向网络发送数据,使用 Receive 方法接收传入的数据文报。

TCP代码实现

class Program {static void Main(string[] args) {//1,TcpListener对socket进行了一层封装,这个类里面自己会去创建socket对象TcpListener listener = new TcpListener(IPAddress.Parse("192.168.0.112"),7788);//2,开始进行监听listener.Start();//3,等待客户端连接过来TcpClient client = listener.AcceptTcpClient();//4,取得客户端发送过来的数据NetworkStream stream = client.GetStream();//得到了一个网络流  从这个网络流可以取得客户端发送过来的数据byte[] data = new byte[1024];//创建一个数据的容器,用来承接数据while (true){//0 表示从数组的哪个索引开始存放数据//1024表示最大读取的字节数int length = stream.Read(data, 0, 1024);//读取数据string message = Encoding.UTF8.GetString(data, 0, length);Console.WriteLine("收到了消息:" + message);}stream.Close();client.Close();listener.Stop();//停止监听Console.ReadKey();}}
class Program {static void Main(string[] args) {//当我们创建tcpclient对象的时候,就会跟server去建立连接TcpClient client = new TcpClient("192.168.0.112",7788);NetworkStream stream = client.GetStream();//通过网络流进行数据的交换//read用来读取数据,write用来写入数据其实就是发送数据//利用一个死循环,重复向服务器端发送数据while (true){string message = Console.ReadLine();byte[] data = Encoding.UTF8.GetBytes(message);stream.Write(data, 0, data.Length);}stream.Close();client.Close();Console.ReadKey();}}

UDP实现

  • 客户端实现
class Program {static void Main(string[] args) {//创建udpclient对象UdpClient client = new UdpClient();while (true){string message = Console.ReadLine();byte[] data = Encoding.UTF8.GetBytes(message);client.Send(data, data.Length, new IPEndPoint(IPAddress.Parse("192.168.0.112"), 7788));}client.Close();Console.ReadKey();}}
  • 服务端实现
  class Program {static void Main(string[] args) {//创建udpclient 绑定ip跟端口号UdpClient udpClient = new UdpClient(new IPEndPoint(IPAddress.Parse("192.168.0.112"),7788));while (true){//接收数据IPEndPoint point = new IPEndPoint(IPAddress.Any, 0);byte[] data = udpClient.Receive(ref point);//通过point确定数据来自哪个ip的哪个端口号 返回值是一个字节数组,就是我们的数据string message = Encoding.UTF8.GetString(data);Console.WriteLine("收到了消息:" + message);}udpClient.Close();Console.ReadKey();}}

C# socket编程TcpClient与TcpListener UdpClient相关推荐

  1. C# Socket网络通信_TCP(TcpListener和TcpClient)

    简单Socket-Tcp通信 在本文中涉及到通信,仅做简单的通信(服务端接受消息,由客户端发出消息) 如有需要,根据需求可直接copy使用 1.关键字-TcpListener 需要引用命名空间: us ...

  2. C# Socket 编程详解

    Microsoft.Net Framework为应用程序访问Internet提供了分层的.可扩展的以及受管辖的网络服务,其名字空间System.Net和 System.Net.Sockets包含丰富的 ...

  3. 网络Socket编程

    Microsoft.Net Framework为应用程序访问Internet提供了分层的.可扩展的以及受管辖的网络服务,其名字空间System.Net和System.Net.Sockets包含丰富的类 ...

  4. C# Socket编程(5)使用TCP Socket

    TCP 协议(Transmission Control Protocol,传输控制协议)是TCP/IP体系中面向连接(connection oriented)的传输层(transport layer) ...

  5. PERL 使用IO::Socket::INET模块实现socket编程

    In this article, let us discuss how to write Perl socket programming using the inbuilt socket module ...

  6. 多线程下SOCKET编程

    SOCKET编程往往离不开多线程,说到多线程,总的说来还是一个比较复杂的东西,尤其是业务逻辑变得复杂的时候,有时候或者说经常,会弄得人头晕脑胀.但是C#,相对好一点,因为微软封装了,帮我们做很多工作, ...

  7. [linux] Linux网络之Socket编程入门

    目录 1. 前言 2. 网络基础 2.1 协议 2.1.1 TCP和UDP协议 2.2 网络的层状结构 2.3 一台主机向另一台主机的发送数据的流向 2.4 IP和MAC地址 2.5 端口 2.6 网 ...

  8. 初识网络及socket编程基础

    理解源IP地址和目的IP地址 在IP数据包头部中, 有两个IP地址, 分别叫做源IP地址, 和目的IP地址. 源ip地址就是发送端ip,目的ip地址就是接收端ip 思考: 我们光有IP地址就可以完成通 ...

  9. 网络聊天工具Socket编程心得

    首先要了解TCP协议通信的流程: 1.服务器端首先创建服务器套接字 2.服务器套接字监听一个端口,等待客户端的请求 3.客户端创建一个客户端套接字 4.客户端向服务器发送请求 5.服务器确认与客户端的 ...

  10. Go中的Socket编程

    在很多底层网络应用开发者的眼里一切编程都是Socket,话虽然有点夸张,但却也几乎如此了,现在的网络编程几乎都是用Socket来编程.你想过这些情景么?我们每天打开浏览器浏览网页时,浏览器进程怎么和W ...

最新文章

  1. Linux运维工程师发展前景
  2. SLAM | 视觉SLAM中特征点法与直接法结合:SVO
  3. vagrant学习笔记
  4. linux下使用free命令查看实际内存占用
  5. 如何将.py文件转换为.exe
  6. azkaban修改MySQL配置上传包的大小上限
  7. POJ - 1328 Radar Installation(贪心+思维)
  8. 修改了sql默认路径无法登录服务器,PostgreSQL错误'无法连接到服务器:没有这样的文件或目录'...
  9. Hadoop精华问答 | Hadoop 和Spark有什么区别?
  10. UILabel常用属性
  11. 培养杰出程序员的捷径
  12. 入门学习asp.net mvc
  13. 深度学习(目标检测。图像分割等)图像标注工具汇总
  14. 洛谷 P4344 [SHOI2015]脑洞治疗仪
  15. 英语常用九种时态记忆要点
  16. html表格筛选排序规则,excel表格的排序规则与排序技术
  17. 【代码审计】51 TP5框架、无框架 变量覆盖反序列化
  18. 【论文导读】Continuity Scaling: A Rigorous Framework for Detecting andQuantifying Causality Accurately
  19. js正则只能匹配正整数或零
  20. win7系统提示actionscript错误如何解决

热门文章

  1. HTML5 — 知识总结篇《VII》【图片元素】
  2. Android SurfaceView动画(一)
  3. rk3399_android7.1耳机拔插ADC检测
  4. SQlite数据库框架:LitePal
  5. forEach,for in,for of循环的用法
  6. XMLHttpRequest.responseType
  7. 设置配置高可用的Mysql双机热备(Mysql_HA)
  8. 游戏筑基开发之字符串的注意点(C语言)
  9. 十九、K8s集群设置1- kube-bench
  10. 通过napalm-huawei-vrp模块对华为交换机信息进行分析(ENSP模拟器)