C# Winform编程(9)网络编程_winform无线读写代码,2024年最新Linux运维屏幕适配很难嘛其实也就那么回事

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注运维)
img

正文

        reader.Close();
        s.Close();
    }

    /// <summary>
    /// 获取Header头信息
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button2\_Click(object sender, EventArgs e)
    {
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(textBox1.Text);
        HttpWebResponse res = (HttpWebResponse)req.GetResponse();
        NameValueCollection headers = res.Headers;
        
        foreach (string name in headers)
        {
            listBox1.Items.Add(name + "------" + headers[name]);
        }
    }
}

}


![在这里插入图片描述](https://img-blog.csdnimg.cn/7c199ad9508d4d4084d3313042a4b390.png)


## WebBrowser网页浏览器控件


将WebBrowser控件拖拽到窗体上。设置网页地址即可浏览网页:  
 webBrowser1.Navigate(“www.baidu.com”, false);


## TCP网络编程


System.Net.Sockets命名空间包含了一些相关类,允许直接发送TCP网络请求或者某个端口监听TCP网络请求。  
 System.Net.Sockets命名空间:  
 类:




| 名称 | 说明 |
| --- | --- |
| Socket | 实现套接字接口 |
| SocketException | 发生套接字错误时引发的异常 |
| TcpClient | 为TCP网络服务提供客户端连接 |
| TcpListener | 从TCP网络客户端侦听连接 |
| UdpClient | 提供用户数据协议(UDP)网络服务 |


枚举




| 名称 | 说明 |
| --- | --- |
| AddressFamily | 指定Socket类的实例可以使用的寻找方案 |
| ProtocolFamily | 指定Socket类的实例可以使用的协议类型 |
| PortocolType | 指定Socket类支持的协议 |
| SocketFlags | 指定套接字的发送和接收行为 |
| SocketOptionLevel | 为Socket.SetSocketOption和Socket.GetSocketOption方法定义套接字选项级别 |


### TcpClient类


主要使用TcpClient类为TCP网络服务提供连接,包括相关属性和方法来控制连接,通过对流对象添加读写功能。  
 TcpClient类的主要方法:




| 名称 | 说明 |
| --- | --- |
| Connect | 使用指定的主机名和端口号将客户端连接到TCP主机 |
| GetStream | 返回用于发送和接收数据的NetworkStream |
| Close | 释放此TcpClient实例,而不关闭基础连接 |


TcpClient类的主要属性:




| 名称 | 说明 |
| --- | --- |
| Client | 获取或设置基础Socket |
| SendTimeout | 发送操作超时时间 |
| SendBufferSize | 获取或设置发送缓冲区的大小 |
| ReceiveTimeout | 接收操作超时时间 |
| ReceiveBufferSize | 获取或设置接收缓冲区的大小 |


### TcpListener类


TcpListener类用于监听和接收连接请求,主要方法:




| 方法 | 说明 |
| --- | --- |
| Start | 开始侦听传入的连接请求 |
| AcceptSocket | 接受挂起的连接请求 |
| Stop | 关闭侦听器 |


### NetworkStream类


传输数据时主要使用了NetworkStream类,它代表的是网络中传输的数据流,在发生会接收数据时,可从流中获取字节数据或对应的字符串。  
 NetworkStream类的主要方法:




| 名称 | 说明 |
| --- | --- |
| Read() | 从NetworkStream读取数据 |
| ReadByte() | 从流中读取一个字节,并将流内的位置向前推进一个字节,已到达流的末尾,则返回-1 |
| Write() | 将数据写入NetworkStream |
| WriteByte() | 将一个字节写入流的当前位置,并将流内的位置向前推进一个字节 |


NetworkStream类的主要属性:




| 名称 | 说明 |
| --- | --- |
| Length | 获取流上可用数据的长度 |
| Socket | 获取基础Socket |


服务端:



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace NetWorkDemo
{
public partial class FormTCPRecv : Form
{
public FormTCPRecv()
{
InitializeComponent();
}

    private TcpListener listen;
    private NetworkStream netstream;
    /// <summary>
    /// 启动
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button1\_Click(object sender, EventArgs e)
    {
        listen = new TcpListener(9999);
        listen.Start();
        listBox1.Items.Add("服务器启动");
        Socket socket = listen.AcceptSocket();
        netstream = new NetworkStream(socket);
    }


    /// <summary>
    /// 接收
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button2\_Click(object sender, EventArgs e)
    {
        if (netstream.DataAvailable)
        {
            byte[] getdata = new byte[1024];
            int length = netstream.Read(getdata, 0, getdata.Length);
            string msg = Encoding.Default.GetString(getdata, 0, length);
            listBox1.Items.Add("收到客户端消息");
            listBox1.Items.Add(msg);
        }
    }
}

}


客户端:



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace NetWorkDemo
{
public partial class FormTCPSender : Form
{
public FormTCPSender()
{
InitializeComponent();
}

    private NetworkStream netstream;
    private void button1\_Click(object sender, EventArgs e)
    {
        TcpClient client = new TcpClient();
        client.Connect("localhost", 9999);
        netstream = client.GetStream();
        if (textBox1.Text.Trim() == "")
        {
            MessageBox.Show("消息不能为空");
            return;
        }
        else
        {
            byte[] senddata = Encoding.Default.GetBytes(textBox1.Text);
            netstream.Write(senddata, 0, senddata.Length);
            netstream.Flush();
        }
        netstream.Close();
    }
}

}


### Socket类


Socket实例包含了一个本地或者一个远程端点的套接字信息,Socket类的主要成员:  
 Socket类的主要方法:




| 名称 | 说明 |
| --- | --- |
| Connect | 建立与远程主机的连接 |
| Close | 关闭Scket连接并释放所有关联的资源 |
| Listen | 将Socket置于侦听状态 |
| Receive | 接收来自绑定的Socket的数据 |
| Send | 将数据发送到连接的Socket |


Socket类的主要属性:




| 名称 | 说明 |
| --- | --- |
| AddressFamily | 获取Socket的地址族 |
| Available | 获取已经从网络接收且可供读取的数据量 |
| Connected | 获取一个值,该值表明套接字是否与最后完成发送或接收操作的远程设备得到连接 |
| ProtocolType | 获取Socket的协议类型 |
| RemoteEndPoint | 获取远程端点 |
| SendTimeout | 发送超时时间 |
| SocketType | 获取Socket的类型 |
| ReceiveBufferedSize | 获取或设置Socket接收缓冲区的大小 |


Socket类的构造函数:  
 public Socket(AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType);


**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)**
![img](https://img-blog.csdnimg.cn/img_convert/be6b1ea8fcec1086d1fbc431b1ef5d91.jpeg)

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
dressFamily, SocketType socketType, ProtocolType protocolType);


**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)**
[外链图片转存中...(img-HNI9vsGL-1713303156183)]

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值