···C#学习(六)···

本文详细介绍了Socket服务器端的基本操作流程,包括创建Socket、绑定IP和端口、监听客户端连接及数据通信等步骤。此外,还讲解了如何利用FileInfo和DirectoryInfo类进行文件和文件夹的操作,以及使用File类进行文件的读写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Socket

服务器端


socket 需要引用System.Net.Sockets命名空间
1、创建Socket

Socket TCPServer = newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

2、绑定ip和端口号

IPAddress ipaddress = new IPAddress(new byte[]{192,168,0,104});
EndPiont point = new IPEndPoint(ipaddress,55200);//IPEndPoind是对ip+端口做了一层封装的类
tcpServer.Bind(point);//想操作系统申请一个可用的ip+端口号用来做通信

3、开始监听(等待客户端连接)

tcpServer.Listen(100);//参数为最大连接数


Socket clientSocket = tcpServer.Accept();//暂停当前线程,直到有一个客户端链接过来,之后进行下面的代码。类似readkey()。

4、使用返回的socket跟客户端做通信

string message = "hello";
byte[] data = Encoding.UTF8.GetBytes(message );//对字符串做编码得到一个字符串的字节数组
clientSocket.Send(data);

socket 待学习

文件操作
通过FileInfo和DirectoryInfo类来读取文件和文件夹的属性
相对路径:当前程序所在的路径
绝对路径:就是拥有完整的路径名
加上@会阻止字符串特殊字符转义

FileInfo fileInfo = new FileInfo("Text.txt");//构造初始化相对路径
fileInfo.Exists//此属性判断文件存不存在
fileInfo.Name//此属性为文件名+后缀
fileInfo.Directory//可以取出当前文件所在目录
fileInfo.Length//获取文件大小单位是字节
fileInfo.IsReadOnly//是否是只读的



fileInfo.Delete();//删除的是输出路径的文件,工程下的文件还是存在的
fileInfo.CopyTo();//复制当前文件到另一个文件
fileInfo.Create();//创建当前文件
fileInfo.MoveTo("text1.txt");//相当于重命名操作

文件夹操作

DirectoryInfo dirInfo = new DirectoryInfo(directoryPath);

File 文件读写

File.ReadAllLines();//读取所有行,返回一个字符串数组
File.ReadAllText();//读取所有行,返回一个字符串
File.ReadAllBytes();//读取非文本文件,返回一个字节数组

File.WriteAllText(string path,string contene);创建一个文件并写入数据,如果文件存在则覆盖原先的文件。
File.WriteAllBytes();
File.WriteAllLines();//创建新文件,并传入字符串数组

XML操作
Xml:可扩展标记语言,传输存储数据
是一种树型结构

<?xml version = '1.0' encoding = "ISO-8859-1"?>
当前xml版本编码格式
<root>xml根元素
<to>Geogre</to>
<from>John</from>
<heading>Remeber</heading>
<body>Dont forget</body>
</root>

语法规则:每个xml元素都有关闭标签,且对大小写敏感。、
命名规则:名称不能xml开始

读取xml文档

XmlDocument是专门用来解析xml文档的,需引入System.Xml;

//创建技能信息结合,用来存储所有的技能信息
List<Skill> skillList = new List<Skill>();





XmlDocument xmlDoc = new XmlDocument();
//选择要加载解析的xml文档的名字
xmlDoc.Load("a.txt");
//得到根节点,XmlNode 用来代表一个节点
XmlNode rootNode = xmlDoc.firstChild;//获取根节点
// 得到根节点下面的子节点的集合
XmlNodeList skillNodeList = rootNode.ChildNodes;//获取当前节点下面的所有子节点

foreach(XmlNode skillNode in skillNodeList){
    XmlNodeList fieldNodeList = skillNode.childNodes;//获取当前节点下面的所有子节点
    foreach(XmlNode fieldNode in fieldNodeList){
    if(fieldNode.Name =="id"){//获取Name属性,可以获取一个节点的名字
    int id = Int32.Parse(fieldNode.InnerText);
    skill.Id = id;
}else if(fieldNode.Name=="name"){
string name = fieldNode.InnerText;
skill.Name = name;
skill.Lang = fieldNode.Attributes[0].value;//获取属性
}
}
}
XmlElement ele = fieldNode["Name"];//得到当前元素
ele.InnerText;//获取元素内文本

XmlAttributeCollection col = skillNode Attributes//获取该节点属性的集合

XmlAttribute idAttribute = col["SKILLID"];//通过字符串索引器获取一个属性对象

idAttribute.Value//获取当前属性值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值