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//获取当前属性值