TCP介绍:
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP在因特网协议族(TCP/IP协议族)中担任主要的传输协议,为许多应用程序(如Web浏览器和电子邮件客户端)提供可靠的数据传输服务。
TCP的主要功能包括:
- 建立连接:TCP通过三次握手(3-way handshake)过程建立连接。这个过程包括SYN(同步)包、SYN-ACK(同步确认)包和ACK(确认)包。
- 数据传输:TCP提供可靠的数据传输服务,通过将数据分割成TCP认为最适合发送的数据块,并在接收端重新组装这些数据块,以保证数据的完整性。
- 流量控制:TCP使用滑动窗口机制进行流量控制,通过调整窗口大小来控制数据的发送速率,以避免发送方超过接收方的处理速度。
- 拥塞控制:TCP通过拥塞控制算法(如慢开始、拥塞避免、快重传和快恢复)来避免网络拥塞。当检测到网络出现拥塞时,发送方会减慢发送速率,以降低数据包丢失的可能性。
- 错误检测:TCP使用校验和(checksum)来检测数据包在传输过程中的错误。在发送数据时,发送方计算校验和,接收方收到数据后也计算校验和,如果两个校验和不匹配,则表示数据包在传输过程中发生了错误。
TCP网络程序综合练习-客户端/服务器的交互
服务器端:
创建服务器项目Server,在Main方法中创建TCP连接对象,然后监听客户端接入,并读取接入客户端IP地址和传入的消息,最后再向客户端发送一条信息。
完整示例代码:
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 Server
{
class Program
{
static void Main()
{
int port = 888;//端口
TcpClient tcpClient;//创建TCP连接对象
IPAddress[] serverIP = Dns.GetHostAddresses("127.0.0.1");//定义IP地址
IPAddress localAddress = serverIP[0];//IP地址
TcpListener tcpListener = new TcpListener(localAddress, port);//监听套接字
tcpListener.Start(); //开始监听
Console.WriteLine("服务器启动成功,等待用户接入…");//输出消息
while (true)
{
try
{
tcpClient = tcpListener.AcceptTcpClient();//每接收一个客户端则生成一个TcpClient
NetworkStream networkStream = tcpClient.GetStream();//获取网络数据流
BinaryReader reader = new BinaryReader(networkStream);//定义流数据读取对象
BinaryWriter writer = new BinaryWriter(networkStream);//定义流数据写入对象
while (true)
{
try
{
string strReader = reader.ReadString();//接收消息
string[] strReaders = strReader.Split(new char[] { ' ' });//截取客户端消息
Console.WriteLine("有客户端接入,客户IP:" + strReaders[0]);//输出接收的客户端IP地址
Console.WriteLine("来自客户端的消息:" + strReaders[1]);//输出接收的消息
string strWriter = "我是服务器,欢迎光临,现在正在测试通信状态。。。。";//定义服务端要写入的消息
writer.Write(strWriter);//向对方发送消息
}
catch
{
break;
}
}
}
catch
{
break;
}
}
}
}
}
篇幅太长,客户端的放到下次了。