赣州网站建设价位,做网站的服务器,济南可信网站,wordpress音频播放不了目录
一、Socket类
1.Socket类的常用属性及说明
2.Socket类的常用方法及说明
二、TcpClient类
三、TcpListener类
四、示例
1.源码
2.生成效果 TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在C#中#xff0c;TCP程序设…目录
一、Socket类
1.Socket类的常用属性及说明
2.Socket类的常用方法及说明
二、TcpClient类
三、TcpListener类
四、示例
1.源码
2.生成效果 TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在C#中TCP程序设计是指利用Socket类、TcpClient类和 TcpListener类编写的网络通信程序这3个类都位于System.Net.Sockets命名空间中。利用TCP协议进行通信的两个应用程序是有主次之分的一个称为服务器端程序另一个称为客户端程序。
一、Socket类 Socket类为网络通信提供了一套丰富的方法和属性主要用于管理连接实现Berkeley套接字接口同时它还定义了绑定、连接网络端点及传输数据所需的各种方法提供处理端点连接传输等细节所需要的功能。TcpClient和UdpClinet等类在内部使用该类。
1.Socket类的常用属性及说明 属性 说明 AddressFamily 获取Socket的地址族 Availabe 获取已经从网络接收且可供读取的数据量 Connected 获取一个值该值指示Socket是在上次Send还是Receive操作时连接到远程主机 Handle 获取Socket的操作系统句柄 LocalEndPoint 获取本地终结点 ProtocolType 获取Socket的协议类型 RemoteEndPoint 获取远程终结点 SendTimeout 获取或设置一个值该值指定之后同步Send调用将超时的时间长度
2.Socket类的常用方法及说明
方法说明Accept为新建连接创建新的SocketBeginAccept开始一个异步操作来接受一个传入的连接尝试BeginConnect开始一个对远程主机连接的异步请求BeginDisconnect开始异步请求从远程终结点断开连接BeginReceive开始从连接的Socket中异步接收数据BeginSend将数据异步发送到连接的SocketBeginSendFile将文件异步发送到连接的SocketBeginSendTo向特定远程主机异步发送数据Close关闭Socket连接并释放所有关联的资源Connect建立与远程主机的连接Disconnect关闭套接字连接并允许重用套接字EndAccept异步接受传入的连接尝试EndConnect结束挂起的异步连接请求EndDisconnect结束挂起的异步断开连接请求EndReceive结束挂起的异步读取EndSend结束挂起的异步发送EndSendFile结束文件的挂起异步发送EndSendTo结束挂起的、向指定位置进行的异步发送Listen将Socket置于侦听状态Receive接收来自绑定的Socket的数据Send将数据发送到连接的SocketSendFile将文件和可选数据异步发送到连接的SocketSendTo将数据发送到特定终结点Shutdown禁用某Socket上的发送和接收
二、TcpClient类 TcpClient类用于在同步阻止模式下通过网络来连接、发送和接收流数据。为了使TcpClient连接并交换数据TcpListener实例或Socket实例必须侦听是否有传入的连接请求。可以使用下面两种方法之一连接该侦听器。
创建一个TcpClient并调用Connect方法连接。使用远程主机的主机名和端口号创建TcpClient此构造函数将自动尝试一个连接。TcpListener类用于在阻止同步模式下侦听和接受传入的连接请求。可使用TcpClient类或Socket类来连接TcpListener并且可以使用IPEndPoint、本地IP地址及端口号或者仅使用端口号来创建TcpListener实例对象。 TcpClient类的常用属性、方法及说明如表 属性及方法 说明 Available属性 获取已经从网络接收且可供读取的数据量 Client属性 获取或设置基础Socket Connected属性 获取一个值该值指示TepClient的基础Socket是否已连接到远程主机 RecieveBufferSize属性 获取或设置接收缓冲区的大小 RecieveTimeout属性 获取或设置在初始化一个读取操作后TcpClient等待接收数据的时间量 SendBufferSize属性 获取或设置发送缓冲区的大小 SendTimeout属性 获取或设置TcpClient等待发送操作成功完成的时间量 BeginConnect方法 开始一个对远程主机连接的异步请求 Close方法 释放此TcpClient实例而不关闭基础连接 Connec方法 使用指定的主机名和端口号将客户端连接到TCP主机 EndConnect方法 异步接受传入的连接尝试 GetStream方法 返回用于发送和接收数据的NetworkStream
三、TcpListener类 TcpListener类的常用属性、方法及说明如表
属性及方法说明LocalEndpoint属性获取当前TcpListener的基础EndPointServer属性获取基础网络SocketAcceptSocket/AcceptTcpClient方法接受挂起的连接请求BeginAcceptSocket/BeginAcceptTcpClient方法开始一个异步操作来接受一个传入的连接尝试EndAcceptSocket方法异步接受传入的连接尝试并创建新的Socket来处理远程主机通信EndAcceptTcpClient方法异步接受传入的连接尝试并创建新的TcpClient来处理远程主机通信Start方法开始侦听传入的连接请求Stop方法关闭侦听器
四、示例
1.源码
// Client
// .NET 8.0控制台应用
using System;
using System.IO;
using System.Net;using System.Net.Sockets;namespace _Client
{class Program{static void Main(string[] args){TcpClient tcpClient new(); //创建一个TcpClient对象自动分配主机IP地址和端口号 tcpClient.Connect(127.0.0.1, 888); //连接服务器其IP和端口号为127.0.0.1和888 if (tcpClient ! null) //判断是否连接成功{Console.WriteLine(连接服务器成功);NetworkStream networkStream tcpClient.GetStream(); //获取数据流BinaryReader reader new(networkStream); //定义流数据读取对象BinaryWriter writer new(networkStream); //定义流数据写入对象string localip 127.0.0.1; //存储本机IP默认值为127.0.0.1IPAddress[] ips Dns.GetHostAddresses(Dns.GetHostName());//获取所有IP地址foreach (IPAddress ip in ips){if (!ip.IsIPv6SiteLocal) //如果不是IPV6地址localip ip.ToString(); //获取本机IP地址}writer.Write(localip 你好服务器我是客户端); //向服务器发送消息 while (true){try{string strReader reader.ReadString(); //接收服务器发送的数据 if (strReader ! null){Console.WriteLine(来自服务器的消息 strReader);//输出接收的服务器消息}}catch{break; //接收过程中如果出现异常退出循环 }}}Console.WriteLine(连接服务器失败);}}
}
// Server
// .NET 8.0控制台应用
using System.Net;
using System.Net.Sockets;namespace _Server
{class Program{static void Main(){int port 888;TcpClient tcpClient;IPAddress[] serverIP Dns.GetHostAddresses(127.0.0.1); //定义IP地址IPAddress localAddress serverIP[0]; //IP地址 TcpListener tcpListener new(localAddress, port); //监听套接字tcpListener.Start(); //开始监听 Console.WriteLine(服务器启动成功等待用户接入…); //输出消息 while (true){try{tcpClient tcpListener.AcceptTcpClient(); //每接收一个客户端则生成一个TcpClient NetworkStream networkStream tcpClient.GetStream();//获取网络数据流BinaryReader reader new(networkStream); //定义流数据读取对象BinaryWriter writer new(networkStream); //定义流数据写入对象while (true){try{string strReader reader.ReadString(); //接收消息string[] strReaders strReader.Split([ ]);//截取客户端消息Console.WriteLine(有客户端接入客户IP strReaders[0]); //输出接收的客户端IP地址 Console.WriteLine(来自客户端的消息 strReaders[1]); //输出接收的消息 string strWriter 我是服务器欢迎光临; //定义服务端要写入的消息writer.Write(strWriter); //向对方发送消息 }catch{break;}}}catch{break;}}}}
}2.生成效果