Socket中发送XML文件Dim SendSocket As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) Dim ipendpoint As New IPEndPoint(Net.IPAddress.Parse("192.168.0.8"), 8888) '指定IP和PORT Dim fs As New IO.FileStream("c:\p.XML", FileMode.OpenOrCreate, IO.FileAccess.Read) '将来传输的文件进行流处理 Dim fssize(fs.Length - 1) As Byte '设置要传输的文件大小 Dim strread As New IO.BinaryReader(fs) '流处理要传输的文件 strread.Read(fssize, 0, fssize.Length - 1) '将流处理过的要发送的文件读入到fssize中 SendSocket.Connect(ipendpoint) SendSocket.Send(fssize) Label2.Text = fs.Length '显示文件大小 fs.Close() SendSocket.Shutdown(SocketShutdown.Send) SendSocket.Close()
Dim ipendpoint As New IPEndPoint(Net.IPAddress.Parse("192.168.0.8"), 8888) '指定IP和PORT
Dim fs As New IO.FileStream("c:\p.XML", FileMode.OpenOrCreate, IO.FileAccess.Read)
'将来传输的文件进行流处理
Dim fssize(fs.Length - 1) As Byte
'设置要传输的文件大小
Dim strread As New IO.BinaryReader(fs) '流处理要传输的文件
strread.Read(fssize, 0, fssize.Length - 1)
'将流处理过的要发送的文件读入到fssize中
SendSocket.Connect(ipendpoint)
SendSocket.Send(fssize)
Label2.Text = fs.Length '显示文件大小
fs.Close()
SendSocket.Shutdown(SocketShutdown.Send)
SendSocket.Close()
<?xml version="1.0" encoding="GB2312"?>
<gz>
<main>
<rebufnum>123456789</rebufnum>
<iso>
<nobuf>asdfghj</nobuf>
<nobuf>asdfghj</nobuf>
<!--.....
....
....
....-->
<nobuf>asdfghj</nobuf>
</iso>
</main>
</gz>
我要对p.XML 插值 怎么处理?
XML操作:
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.Load("c:\p.XML");
设置节点信息:
/// <summary>
/// 设置配置信息
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
public void SetKeyValue(string key, string value)
{
XmlNode xmlNode;
XmlElement xElem;
xmlNode = XmlDoc.SelectSingleNode("//appSettings");
if (xmlNode != null)
{
xElem = (XmlElement)xmlNode.SelectSingleNode("//add[@key=\"" + key + "\"]");
if (xElem != null)
{
xElem.SetAttribute("value", value); XmlDoc.Save(fileName);
}
}
} /// <summary>
/// 读取配置信息
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public string ReadConfigValue(string key)
{
XmlNode xmlNode;
XmlElement xElem; xmlNode = XmlDoc.SelectSingleNode("//appSettings");
if (xmlNode == null)
{
return "";
}
xElem = (XmlElement)xmlNode.SelectSingleNode("//add[@key=\"" + key + "\"]");
if (xElem == null)
{
return "";
}
return xElem.GetAttribute("value");
}插入节点:
XmlNode xmlNode = XmlDoc.CreateNode(XmlNodeType.Element,"ele","ddd");
xmlNode.InnerText = "aaa";
//在这里改变xmlNode的其他属性
XmlDoc.AppendChild(xmlNode);至于传输,XML本来就是字符串,不需要再序列化什么的,直接把字符串转换成byte[]传给Socket就可以了
转换方法(xmltext是读取的xml字符串):
这里以UTF8编码为例
byte[] bs = System.Text.Encoding.UTF8.GetBytes(xmltext);Socket接收后在转成字符串(data是结束的byte[]类型):
string xmltext = System.Text.Encoding.UTF8.GetString(data);
{
string result = "";
System.Net.WebClient WebClientObj = new System.Net.WebClient();
//添加用户令牌
WebClientObj.Headers.Add("UserKey", userKey);
//附件参数
if (headerKey != null)
{
foreach (string key in headerKey.Keys)
{
WebClientObj.Headers.Add(key, headerKey[key].ToString());
}
}
FileStream fStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
BinaryReader bReader = new BinaryReader(fStream);
long length = fStream.Length;
byte[] data = new byte[Convert.ToInt64(length)];
bReader.Read(data, 0, Convert.ToInt32(length));
try
{
byte[] byRemoteInfo = WebClientObj.UploadData(hostURL, "POST", data);
string sRemoteInfo = System.Text.Encoding.UTF8.GetString(byRemoteInfo);
result = sRemoteInfo;
}
catch (Exception ex)
{
throw ex;
}
finally
{
bReader.Close();
fStream.Close();
} WebClientObj = null;
GC.Collect(); return result;
}