简介

一、什么是Socket编程

  1. Socket字面含义
    Socket英文本义为插座,插座的作用是建立两端之间的连接,因此在网络编程中被引申为网络通信端点。
  2. Socket编程定义
    借助 TCP / UDP 网络协议,实现多台主机之间的数据通信。
  3. 通俗理解
    编写程序,让两台或多台电脑互相收发数据,典型案例:局域网在线聊天工具。

类比理解:插座=网络接口;插头=另一台主机,插好插头=建立网络连接。

为了更好学习,我们用一个示例来边实现边学习。

二、简易聊天工具设计方案

架构模型:客户端/服务端(C/S)
  • 服务端(Server)
  1. 绑定本机指定端口,持续监听网络接入请求
  2. 等待其他电脑发起连接
  3. 监听到客户端接入后,建立通信链路
  • 客户端(Client)
    主动根据服务端IP地址+端口号,发起连接请求
  • 通信目标:两台电脑实时收发文字消息,实现即时聊天

工作流程

  1. 服务端启动 → 开启端口监听
  2. 客户端启动 → 主动连接服务端IP+端口
  3. 连接建立成功后,双方互相发送、接收消息

下面是一个最简单的例子

服务端

// 1. 创建TcpListener监听IP与端口
TcpListener listener = new TcpListener(IPAddress.Any, 8899);
listener.Start();
// 2. 等待客户端连接
TcpClient client = await listener.AcceptTcpClientAsync();
// 3. 获取网络流,循环收发消息
NetworkStream stream = client.GetStream();
Code language: JavaScript (javascript)

客户端

// 连接服务端IP与端口
TcpClient client = new TcpClient();
await client.ConnectAsync("192.168.1.100",8899);
NetworkStream stream = client.GetStream();Code language: JavaScript (javascript)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注