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. Dynamic CRM工作流流程实战

    前言在研究了MSCRM中插件的使用之后,不可避免需要研究工作流,工作流在各种营销系统中都举足轻重. 关于工作流功能:使用工作流可在后台实现业务流程自动化.类别:分为后台工作流(异步)和实时工作流(同步 ...

  2. mysql 查询正在执行的进程-亲试ok

    命令:show processlist 每一列的含义和用途: 第一列 id,不用说了吧,一个标识,你要kill一个语句的时候很有用. 第二列 user列,显示单前用户,如果不是root,这个命令就只显 ...

  3. Django_简介

    Django简介 Django,发音为[`dʒæŋɡəʊ],Django诞生于2003年秋天,2005年发布正式版本,由Simon和Andrian开发. Django上使用哪个Python版本? Dj ...

  4. java对象深度拷贝

    如何利用序列化来完成对象的拷贝呢?在内存中通过字节流的拷贝是比较容易实现的.把母对象写入到一个字节流中,再从字节流中将其读出来,这样就可以创建一个新的对象了,并且该新对象与母对象之间并不存在引用共享的 ...

  5. 用html和css制作奥运五环

    <html><head><meta charset="utf-8"> <style>.circle1,.circle2,.circl ...

  6. Java 开发笔记

    共同学习,以下内容,随时更新. 前端 1.前端页面&apos;是单引号的转义符,"是双引号.  问题(前端JS进行参数传递时,使用的是单引号扩住变量,但是变量形式为 2019-27  ...

  7. flask基础--第二篇

    1.Flask中的HTTPResponse,Redirect, render #导入render_template和redirect from flask import Flask,render_te ...

  8. 第三方jar包导入unity

    关于第三方SDK接入Unity工程方面,有许多坑,下面我把遇到的问题进行总结,希望能够帮到有需要的朋友们.1.把第三方SDK导入Eclipse遇到的问题.eclipse配置完成右键工程后没有andro ...

  9. 记录PHP的执行时间

    网上不少误导信息,实际上这个答案在PHP源码中的Zend文件夹下bench.php是有的 在此纠正下网络上复制粘贴造成的错误.希望后来人少踩点坑. function getmicrotime() { ...

  10. 电脑小白和ta的小白电脑——JAVA开发环境

    JAVA开发环境的搭建有一点点复杂,不过一步一步来一般不会出错. (一)下载JDK 首先我们需要下载java开发工具包JDK,可以通过官网下载:http://www.oracle.com/techne ...