TCP数据传输的疑惑,请达人指点,该如何解决
TCP数据传输的疑惑,请达人指点
服务端DataSet的一个表里的数据通过TCP每秒一次的发送到客户端来更新一个ListView,这种应用一般采用什么方法来发送数据呢?比如winbox就是几千条的链接信息每秒更新一次,它的数据是怎么通过服务器发送到客户端来维护ListView的?
我暂时是服务端遍历这个表里的每条数据,一条条发送,这样可以做到添加新行和修改变更的行,但无法删除ListView里相对应的服务器数据库已删除的行,而且是发送的明码,感觉很不好
请知道的指点一下,这种应用最好的实现方法是什么,不胜感激!
------解决方案--------------------
DataSet可以序列化成XML
您是要DataSet中的一个DataTable的资料?
还是整个DataSet?
应该说您的DataSet有几个DataTable?
您可以参考这一篇,将整个DataSet序列化送到客户端,然后Bind DataSet
http://www.codeproject.com/KB/list/ListView_DataBinding.aspx
服务端DataSet的一个表里的数据通过TCP每秒一次的发送到客户端来更新一个ListView,这种应用一般采用什么方法来发送数据呢?比如winbox就是几千条的链接信息每秒更新一次,它的数据是怎么通过服务器发送到客户端来维护ListView的?
我暂时是服务端遍历这个表里的每条数据,一条条发送,这样可以做到添加新行和修改变更的行,但无法删除ListView里相对应的服务器数据库已删除的行,而且是发送的明码,感觉很不好
请知道的指点一下,这种应用最好的实现方法是什么,不胜感激!
------解决方案--------------------
DataSet可以序列化成XML
您是要DataSet中的一个DataTable的资料?
还是整个DataSet?
应该说您的DataSet有几个DataTable?
您可以参考这一篇,将整个DataSet序列化送到客户端,然后Bind DataSet
http://www.codeproject.com/KB/list/ListView_DataBinding.aspx
- C# code
db = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString); db.Open(); string SQLStatement = "EXEC [BasicSearch] @totalResults = '100',@miles =N'100'"; SqlDataAdapter SQLDataAdapter = new SqlDataAdapter(SQLStatement, db); DataTable dtResult = new DataTable(); SQLDataAdapter.Fill(dtResult); SQLDataAdapter.Dispose(); ListView1.DataSource = dtResult; db.Close();
------解决方案--------------------
DataSet Serilize成Byte[]通过Socket 发送
remoting
通过XML实现数据传输
------解决方案--------------------
把整个datatable序列化后发送
private void sendData(string str)
{
SqlDataAdapter da = new SqlDataAdapter(str,conn);
DataSet ds = new DataSet();
da.Fill(ds,"mytable");
BinaryFormatter formatter = new BinaryFormatter();
NetworkStream stream = new NetworkStream(currentSocket);
formatter.Serialize(stream,ds);
stream.Flush();
stream.Close();
}