Socket通信机制

本文介绍了Socket作为应用层与TCP/IP协议族通信的中间软件抽象层,隐藏了复杂的TCP/IP协议。详细讲解了TCP/IP协议族的概念,以及TCP与UDP协议的区别。此外,还阐述了Socket的实现原理,包括服务端和客户端的实现代码,以及TcpListener、TcpClient和NetworkStream类的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是Socket?

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。(见下图)

在这里插入图片描述
既然是TCP/IP协议族隐藏在Socket接口后面,那么,什么是TCP/IP协议呢?

TCP/IP协议族

TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,不是一个协议,而是包含众多协议的协议集,它是为广域网(WANS)设计的。
UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是属于TCP/IP协议族中的一种。与TCP协议位于同一层,主要作用:为了在给定的主机上能识别多个目的地址,同时允许多个应用程序在同一台主机上工作并能独立地进行数据包的发送和接收,设计用户数据报协议UDP。UDP使用底层的互联网协议来传送报文,同IP一样提供不可靠的无连接数据包传输服务。它不提供报文到达确认、排序、及流量控制等功能。

Socket实现原理

当A给B打电话,A先拨号,接通后进行对话,对话结束,挂掉电话!这也是Socket的实现原理。A拨号就相当于输入IP找到对方主机,在通过端口号找到应用程序,找到主机也找到也找到端口号就可以实现通信了。(见下图)
在这里插入图片描述

命名空间

using System.Net;
using System.Net.Sockets;

服务端实现代码

public partial class frmRecive : Form
{
   
   
    public frmRecive()
    {
   
   
        InitializeComponent();
        Control.CheckForIllegalCrossThreadCalls = false;
    }
    IPAddress IP;//接收IP地址变量
    TcpListener listener;//建立监听器对象,负责监听客户端是否发来连接请求
    TcpClient tcpClient;//主要通过带入主机地址,然后调用Connect进行和服务器点对点的连接,连接成功后通过GetStream方法返回NetworkStream对象
    public void BackgroundWorker1_DoWork(object sender, DoWorkEventArgs e)//BackgroundWorker控件是用来执行多线程任务的控件,如果想在后台执行一些耗时的操作,监听操作进度并在操作完成时发出信号可以使用BackgroundWorker控件。
    {
   
   
        IP = IPAddress.Parse(this.txtIP.Text);//获取自定义ip地址
        listener = new TcpListener(IP, Convert.ToInt32(this.txtPort.Text));//获取自定义端口号
        listener.Start();//开始监听
        this.txtBoxInfo.Text = "服务器启动-" + DateTime.Now.ToLongTimeString() + "\r\n" + this.txtBoxInfo.Text;//提示文字
        tcpClient = listener.AcceptTcpClient();  //负责接收客户端发来的连接请求操作
        this.txtBoxInfo.Text = "连接成功-" + DateTime.
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值