Http使用端口是80
SMTP使用端口是25
TCP是首选协议,它提供有保证的传输、错误校正和缓冲。
System.Net.Sockets. TcpClient类封装了TCP链接,提供属性字段来控制链接,包括缓冲、缓冲区的大小和超时。
TCP提供很多功能来确保数据的传输,它还提供了错误校正以及当数据丢失或数据包损坏时重新传输的功能。TCP可缓冲传入和传出的数据,还保证在传输过程中,在把数据包传输给应用程序之前重组杂乱的一系列数据包。
发送端
            TcpClient tcpClient = new TcpClient(textBox1.Text, Int32.Parse(textBox2.Text));
NetworkStream ns = tcpClient.GetStream();
FileStream fs = File.Open("Send.txt", FileMode.Open); int data = fs.ReadByte();
while (data != -1)
{
ns.WriteByte((byte)data);
data = fs.ReadByte();
}
fs.Close();
ns.Close();
tcpClient.Close();

  接受端

            IPAddress localAddr = IPAddress.Parse("127.0.0.1");
Int32 port = 2112;
System.Net.Sockets.TcpListener tcpListener = new TcpListener(localAddr, port);
tcpListener.Start(); TcpClient tcpClient = tcpListener.AcceptTcpClient(); NetworkStream ns = tcpClient.GetStream();
StreamReader sr = new StreamReader(ns);
string result = sr.ReadToEnd();
Invoke(new UpdateDisplayDelegate(UpdateDisplay), new object[] { result });
tcpClient.Close();
tcpListener.Stop();

  

UDP, 通常在速度和性能要求比可靠性更高的应用程序中使用UDP,如视频流。
UDP是一个无连接的协议。
看别人的,调试,有点小问题,就当参考。
客户
//System.Net.Sockets.UdpClient udpClient = new UdpClient();
//string sendMsg = "Hello Echo Server";
//byte[] sendBytes = Encoding.ASCII.GetBytes(sendMsg);
//udpClient.Send(sendBytes, sendBytes.Length, "UdpTest.net", 7);
//IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, 9093);
//byte[] rcvBytes = udpClient.Receive(ref endPoint);
//string rcvMessage = Encoding.ASCII.GetString(rcvBytes, 0, rcvBytes.Length);
//Console.WriteLine(rcvMessage);
byte[] data = new byte[1024];
string intput, stringData;
IPEndPoint iPEnd = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9095);
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
string welcome = "Hello,Where are you there";
data = Encoding.ASCII.GetBytes(welcome);
server.SendTo(data, data.Length, SocketFlags.None, iPEnd);//将数据发送到指定的终结点 IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint Remote = (EndPoint)sender;
data = new byte[1024];
int recv = server.ReceiveFrom(data, ref Remote);
Console.WriteLine("Message received from{0}", Remote.ToString()); while (true)
{
intput = Console.ReadLine();
if (intput == "text")
{
break;
}
server.SendTo(Encoding.ASCII.GetBytes(intput), Remote);//将数据发送到指定的终结点Remote
data = new byte[1024];
recv = server.ReceiveFrom(data, ref Remote);//从Remote接受数据
stringData = Encoding.ASCII.GetString(data, 0, data.Length);
Console.WriteLine(stringData);
} Console.WriteLine("stop");
server.Close();

  

服务
int recv;
byte[] data = new byte[1024];
IPEndPoint ipEp = new IPEndPoint(IPAddress.Any, 9095);
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
socket.Bind(ipEp);
Console.WriteLine("wait...."); IPEndPoint sender = new IPEndPoint(IPAddress.Any, 9095);
EndPoint Remote = (EndPoint)(sender);
recv = socket.ReceiveFrom(data, ref Remote);
Console.WriteLine("Message receive from {0}", Remote.ToString()); string welcome = "Welcome to my server";
data = Encoding.ASCII.GetBytes(welcome);
socket.SendTo(data, data.Length, SocketFlags.None, Remote);
while (true)
{
data = new byte[1024];
recv = socket.ReceiveFrom(data, ref Remote);
socket.SendTo(data, recv, SocketFlags.None, Remote);
}

  

TCP与UDP
在后台都用到套接字Socket,当准确度要求高的时候,用TCP。若追求性能和速度,而且对准确度要求不高时,用UDP。
 
 TCP协议和UDP协议连接过程的区别如下: 
  1.基于连接与无连接; 
  2.对系统资源的要求(TCP较多,UDP少); 
  3.UDP程序结构较简单; 
  4.TCP数据传输采用流模式与UDP则采用数据报模式 ; 
  5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。

C# TCP与UDP的更多相关文章

  1. C++网络套接字编程TCP和UDP实例

    原文地址:C++网络套接字编程TCP和UDP实例作者:xiaojiangjiang 1.       创建一个简单的SOCKET编程流程如下 面向有连接的套接字编程 服务器: 1)  创建套接字(so ...

  2. 【校验】TCP和UDP的校验和

    一开始,私以为校验和只是简单的求和得到的结果,后来在TCP和UDP里面看到使用的校验和方式有点奇怪--二进制反码(循环进位)求和. 人类的认知过程必将从简单到复杂,看下这个二进制反码循环求和是啥子意思 ...

  3. 初入网络系列笔记(2)TCP和UDP

    一.借鉴说明,本博文借鉴以下博文 1.BlueTzar,TCP/IP四层模型, http://www.cnblogs.com/BlueTzar/articles/811160.html 2.叶剑峰,漫 ...

  4. 传输层协议TCP和UDP

    本文力图简洁,让读者对TCP和UDP有个初步的认知.闲话少说,现在开始吧.TCP和UDP都是传输层的协议.TCP通过三次握手建立可靠连接,对未送达的消息重新进行发送.UDP不建立连接而直接发送,对未送 ...

  5. 【Python网络编程】利用Python进行TCP、UDP套接字编程

    之前实现了Java版本的TCP和UDP套接字编程的例子,于是决定结合Python的学习做一个Python版本的套接字编程实验. 流程如下: 1.一台客户机从其标准输入(键盘)读入一行字符,并通过其套接 ...

  6. http、tcp、udp、OAUTH2.0网络协议区别

                    一.先来一个讲TCP.UDP和HTTP关系的 1.TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层. 在网络层有IP协议.ICMP协议.ARP协议.RAR ...

  7. TCP 三次握手四次挥手, ack 报文的大小.tcp和udp的不同之处、tcp如何保证可靠的、tcp滑动窗口解释

    一.TCP三次握手和四次挥手,ACK报文的大小 首先连接需要三次握手,释放连接需要四次挥手 然后看一下连接的具体请求: [注意]中断连接端可以是Client端,也可以是Server端. [注意] 在T ...

  8. OSI参考模型及各层功能,TCP与UDP的区别

    OSI参考模型:ISO/IEC 7498标准定义了网络互联的7层结构模型,即开放系统互连参考模型. OSI参考模型定义了开放系统的层次结构.层次之间的相互关系,以及各层所包括的可能的服务.OSI的服务 ...

  9. TCP与UDP的区别

    TCP与UDP的区别 TCP面向连接:UDP是无连接,即发送数据之前不需要建立连接 TCP提供可靠的服务,TCP连接传送的数据,无差错.不丢失.不重复,且按顺序到达:UDP尽最大努力交付,即不保证可靠 ...

  10. 基于socket的TCP和UDP编程

    一.概述 TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议. TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流 ...

随机推荐

  1. 人生苦短,我用python(目录)

    一.python基础篇 python中闭包及延时绑定问题 python中的装饰器.生成器 二.前端 bootstrap框架 BOM&DOM JavaScript中的词法分析 三.数据库 mys ...

  2. 初识ldap

    什么是LDAP? LDAP的英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.它是基于X.500标准的, 但是简单多了并且可以根据需要定制.与 ...

  3. 给MS的意见

    2017-02-27 WPF的中文注释文档翻译得很烂.太多了,列举不过来. 这个是 System.Threading.Tasks.Task.Exception: 获取导致 System.Aggrega ...

  4. MACE移植要求

    MACE支持Tensorflow的depth_to_space和space_to_depth,以及strided_slice算子. 其中depth_to_space可以用来无平滑地进行上采样. spa ...

  5. 版本管理工具Git(2)git的使用

    上一篇带大家认识了Git,在本篇中将讲解Git的安装及使用: Git系列导航 版本管理工具Git(1)带你认识git 版本管理工具Git(2)git的安装及使用 版本管理工具Git(3)VS下如何使用 ...

  6. DbArithmeticExpression 参数必须具有数值通用类型问题的解决

    C#中LINQ to Entities进行日期比较,使用-运算符,比如: list.FirstOrDefault(s =>(DateTime.Now - s.Updated).TotalHour ...

  7. html布局(盒子)

    在body里面放置两个盒子,里面盒子设置margin-top,外层盒子生效?在里面盒子上面加一个块元素,设置高度 表单 form action="地址" method=" ...

  8. HFun.快速开发平台(三)=》通用系统用户选择

    系统中用户的选择使用特别多,将该功能统一实现可提升系统效率. 用户的选择实现相对简单,系统中基本都会提供,HFun.快速开发平台中的实现特点主要有: 1.用户的选择分为单用户选择和多用户选择. 2.用 ...

  9. 小学生四则运算JAVA

    点我,github地址 组员:黄浩格,何坤 一.项目说明 1题目:实现一个自动生成小学四则运算题目的命令行程序. 2说明: 自然数:0, 1, 2, -. • 真分数:1/2, 1/3, 2/3, 1 ...

  10. mybatis源码解析之Configuration加载(二)

    概述 上一篇我们讲了configuation.xml中几个标签的解析,例如<properties>,<typeAlises>,<settings>等,今天我们来介绍 ...