当前位置: 首页 > news >正文

C# Socket

  • `Socket`
    • 命名空间:
    • 创建 `Socket`:
    • 连接到服务器(客户端):
    • 绑定和监听(服务器端):
    • 接受连接(服务器端):
    • 发送和接收数据:
    • 关闭 `Socket`:
  • 注意

C# 中的 Socket 是一种用于网络通信的底层编程接口,它允许你发送和接收数据。在 C# 中, Socket 类是 System.Net.Sockets 命名空间下的一部分,提供了创建客户端和服务器端应用程序的功能。

以下是一些基本的步骤和概念,用于使用 C# 中的 Socket 进行网络编程:

Socket

命名空间:

使用 using System.Net.Sockets; 来访问 Socket 类。

创建 Socket

使用 Socket 类的构造函数创建一个新的 Socket 实例。你需要指定协议族(通常是 AddressFamily.InterNetwork 表示 IPv4),套接字类型(如 SocketType.Stream 表示 TCP),以及协议类型(如 ProtocolType.Tcp)。

Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp
);

连接到服务器(客户端):

使用 Connect 方法连接到服务器的 IP 地址和端口。

socket.Connect(new IPEndPoint(IPAddress.Parse("192.168.1.100"), 12345));

绑定和监听(服务器端):

使用 Bind 方法将套接字绑定到特定的端点(IP 地址和端口),然后使用 Listen 方法开始监听传入连接。

socket.Bind(new IPEndPoint(IPAddress.Any, 12345));
socket.Listen(10); // 可以同时接受10个客户端连接

接受连接(服务器端):

使用 Accept 方法接受客户端的连接请求,这将返回一个新的 Socket 对象,用于与该客户端通信。

Socket clientSocket = socket.Accept();

发送和接收数据:

使用 SendReceive 方法来发送和接收数据。数据通常以字节数组的形式传输。

byte[] data = Encoding.ASCII.GetBytes("Hello, world!");
socket.Send(data);byte[] buffer = new byte[1024];
int bytesRead = socket.Receive(buffer);
string receivedData = Encoding.ASCII.GetString(buffer, 0, bytesRead);

关闭 Socket

使用 Close 方法关闭套接字连接。

socket.Close();

注意

实际的网络编程可能需要考虑更多的错误处理和多线程问题。以上只是一个简单的示例,用于展示 Socket 类的基本用法。在实际应用中,你可能需要使用 TcpClient 和 TcpListener 类,它们提供了更高级的抽象和简化的 API,使得网络编程更加容易。

http://www.lryc.cn/news/393283.html

相关文章:

  • node的下载、安装、配置和使用(node.js下载安装和配置、npm命令汇总、cnpm的使用)
  • 深度卷积神经网络 AlexNet
  • 【刷题汇总--大数加法、 链表相加(二)、大数乘法】
  • 基于Java的网上花店系统
  • uniApp 封装VUEX
  • 最长公共子序列求长度和输出子序列C代码
  • 安卓Framework开发快速分析日志及定位源码
  • 数据结构算法之B树
  • 【图卷积网络】GCN基础原理简单python实现
  • 【话题】AI是在帮助开发者还是取代他们
  • 精通Perl正则表达式修饰符:提升文本处理能力的艺术
  • 【web前端HTML+CSS+JS】--- HTML学习笔记01
  • Go 语言入门(一)
  • 爬虫笔记20——票星球抢票脚本的实现
  • DDR3(三)
  • JDK都出到20多了,你还不会使用JDK8的Stream流写代码吗?
  • QT slots 函数
  • pycharm如何使用jupyter
  • 机器学习——无监督学习(k-means算法)
  • 强化学习-6 DDPG、PPO、SAC算法
  • vue3实现多表头列表el-table,拖拽,鼠标滑轮滚动条优化
  • Micron近期发布了32Gb DDR5 DRAM
  • SQL Server时间转换
  • kubernetes集群部署:node节点部署和CRI-O运行时安装(三)
  • 03:Spring MVC
  • 玩转springboot之springboot注册servlet
  • 推荐好玩的工具之OhMyPosh使用
  • pydub、ffmpeg 音频文件声道选择转换、采样率更改
  • 0803实操-Windows Server系统管理
  • 使用Java构建物联网应用的最佳实践