首页 > 编程语言 >C#练习:局域网内使用套接字进行信息传输

C#练习:局域网内使用套接字进行信息传输

时间:2024-09-07 13:13:32浏览次数:4  
标签:socket C# 局域网 buffer IPEndPoint new 接字 Port public

C#练习:局域网内使用套接字进行信息传输

一、在C#创建套接字socketserver和cilent。 实现步骤: 1、创建SocketServer对象。 用于监听和返回信息。

①创建socket对象用于SocketSever:
socket的参数
地址族:AddressFamily.InterNetwork
套接类型:SocketType.Stream
传输协议:ProtoclType.Tcp

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

②创建IpEndPoint对象绑定当前IP(address)和监听端口Port。

Address = IPAddress.Parse(address);
Port = port;
IPEndPoint = new IPEndPoint(Address, Port);

③实现对SocketSever对象的初始化。

public class SocketServer{
    ...other code...
        public SocketServer(string address, int port) 
    {
        Address = IPAddress.Parse(address);
        Port = port;
        IPEndPoint = new IPEndPoint(Address, Port);
        socket.Bind(IPEndPoint);
    }
}

④实现SocketServer对象的监听功能。
创建buffer,用于接收传入的信息。
输出接收到的信息。

/// <summary>
/// 执行监听,传入的参数可限定最大的连接数量
/// </summary>
/// <param name="maxLength"></param>
public void Listen(int maxLength)
{
    socket.Listen(maxLength);
    Console.WriteLine($"listen in port:{IPEndPoint.Port} now");
    byte[] buffer = new byte[1024];
    while (true)
    {
        Socket temp = socket.Accept();
        temp.Receive(buffer);
        Console.WriteLine(buffer.Length);
        Console.WriteLine(Encoding.UTF8.GetString(buffer));
        byte[] buffer_response = new byte[1024];
        buffer_response = Encoding.UTF8.GetBytes("received!");
        temp.Send(buffer_response, 0);

    }
}

⑤测试

public static void Main()
{
    SocketServer server = new SocketServer("127.0.0.1", 5612);
    server.Listen(10);
}

2、创建SocketCilent对象。
用于向Server端发送信息。
①创建SocketCilent对象用于向SocketServer发送信息。

public class SocketCilent
{
 /// <summary>
 /// 传入ip地址和监听端口来构造一个Socket服务
 /// </summary>
 /// <param name="address">绑定的ip地址</param>
 /// <param name="port">绑定的监听端口号</param>
 public SocketCilent(string address, int port)
 {
     Address = IPAddress.Parse(address);
     Port = port;
     IPEndPoint = new IPEndPoint(Address, Port);
     socket.Connect(IPEndPoint);
 }
}

②创建发送信息的方法

 /// <summary>
 /// 发送byte[]类型的信息
 /// </summary>
 /// <param name="msg"></param>
 public void Send(string msg)
 {
    byte[] buffer = Encoding.UTF8.GetBytes(msg);

     socket.Send(buffer,0);
     

     socket.Receive(buffer);
     Console.WriteLine(Encoding.UTF8.GetString(buffer));
     socket.Close();
 }

③测试

public static void Main()
{
    SocketCilent cilent = new SocketCilent("127.0.0.1", 5612);
    
    cilent.Send("broadcast message!");
}

标签:socket,C#,局域网,buffer,IPEndPoint,new,接字,Port,public
From: https://www.cnblogs.com/leo130-blogs/p/18401579

相关文章

  • 配置免安装版的apache-tomcat环境,jdk11版本以上。解决控制台环境配置显示成功,确打不开
    我这里下的是jdk22版,https://download.oracle.com/java/22/latest/jdk-22_windows-x64_bin.ziphttps://download.oracle.com/java/22/latest/jdk-22_windows-x64_bin.zip 解压后放在没有中文路径的地方。win+s搜env回车打开环境变量,新建一个变量名:JAVA_HOME,值:为你的jdk解压......
  • 电感相关知识以及传输线串扰的原因分析和PCB布局建议
    一、简述电感在信号完整性章节中,相当重要,很多信号完整性的问题都和电感有关。因此,本文在叙述电感影响信号的作用机理之后,适当的给出PCB布局建议,以达到更好的信号质量。二、电感的含义电感指由导线绕成的线圈或螺线管的电感,其中由磁力线通过,电感是对表面磁场强度的数值......
  • 计算机图形学—NDC归一化设备坐标
    NDC(NormalizedDeviceCoordinates)即归一化设备坐标,是计算机图形学中用于表示和处理图形的一个坐标系统。NDC的坐标范围通常是从[−1,1][−1,1]在x和y轴上,z轴上则是从0到1。它是在将模型空间中的三维坐标转换为屏幕空间坐标之前的一个中间步骤。Frustum:模型的可视......
  • 提升前端性能的JavaScript
    1.代码优化:精简与压缩核心观点:减少文件大小,加快加载速度。深入分析:JavaScript文件的大小是影响页面加载时间的关键因素之一。通过去除代码中的注释、空格、换行符等不必要的字符,以及利用工具如UglifyJS、Terser等进行代码压缩,可以大幅度减少文件体积,进而提升加载速度。案例展示:假设......
  • [C#基础1/21] C#概述
    Notion原笔记1.C#简介1.1C#定义C#在继承C和C++强大功能的同时去掉了一些它们的复杂特性,使其成为C语言家族中的一种高效强大的编程语言1.2C#用途用于捕获、分析和处理数据的业务应用程序可从Web浏览器访问的动态Web应用程序2D和3D游戏金融和科研应......
  • httpclient PoolingHttpClientConnectionManager 连接池使用举例
    1.1TIME_WAIT状态连接的原因和解决策略大量短连接大量短暂的连接会导致短时间内生成大量的TIME_WAIT状态连接。解决方案:尽量使用长连接,减少连接的创建和销毁次数。TCP时间等待池溢出如果服务器短时间内有大量的连接进入TIME_WAIT状态,可能会导致TCP时间等待池溢出。解决方案:可以......
  • Excel文档的读取(1)
    熟悉使用Excel的同学应该都知道,在单个Excel表格里想要分商品计算总销售额,使用数据透视表也可以非常快速方便的获得结果。但当有非常大量的Excel文件需要处理时,每一个Excel文件单独去做数据透视也会消耗大量的时间。就算使用PowerQuery这样的工具进行多表合一,也会有同一个工作......
  • 浙大数据结构:02-线性结构4 Pop Sequence
    这道题我们采用数组来模拟堆栈和队列。简单说一下大致思路,我们用栈来存1234.....,队列来存输入的一组数据,栈与队列进行匹配,相同就pop1、条件准备stk是栈,que是队列。tt指向的是栈中下标,front指向队头,rear指向队尾。初始化栈顶为0,队头为0,队尾为-1#include<iostream>usingn......
  • C++(clock())
    目录1.clock_t2.clock()2.1函数定义3.示例4.注意事项在C++中,clock_t和clock()是与时间度量和性能测量相关的库函数,主要用于计算程序运行的时间。1.clock_tclock_t是在<ctime>或<time.h>中定义的一个类型,通常用于存储由clock()返回的处理器时间值。这个类型......
  • [nacos] Nacos <1> 架构与原理
    1NACOS架构与原理架构推荐文献https://nacos.io/en-us/docs/architecture.html基本架构逻辑架构服务管理:实现服务CRUD、域名CRUD、服务健康检查、服务权重管理等。配置管理:实现配置的CRUD、版本管理、灰度管理、监控管理、推送轨迹、聚合数据等。元数据管理:提......