c# socket timer 多线程 大数据量
问题:现有一个客户端程序主要接设备上传上来的数据,大约有2000台,每天数据量在百万级,客户端组织好设备上传的数据后,通过SOCKet发送到服务器,服务器是由另一个公司来做,刚开始设备不到100台时,数据发送很稳定,每条都能给我回复,而且速度控制在每秒八条左右,现在差不多300台,每天12万左右的数据,出现三分之二不能回复的数据,这样需要下次再发送,久而久之,出现数据滞留,这些代码放在一个TIMER控件里,现在设为1个小时循环一次,实际情况,一个小时运行不好这个循环,有没有更好的方案?
主要代码如下
try
{
CS = new CSocket(serverSocket);
string sql = "select lsh, swaprec from t_collalldatatemp t where state='0' ";
DataTable DtPos = OracleHelper.ExecuteDataTable(OracleHelper.ConnectionString, sql);
NumPos = Convert.ToInt32(DtPos.Rows.Count);
if (NumPos > 0)
{
lvResult.Items.Insert(0, AddListViewItem("客户端", txtJMJIPAddress.Text + ":" + txtJMJPort.Text, "开始上传消费数据..."));
if (CS.Open(serverIp, Convert.ToInt16(port)) == "0")
{
qcount = 0;
for (Int32 iSWAPREC = 0; iSWAPREC
{
CS.AcceptStr = null;
SendTotal = string.Empty;
SendLX = "8030";
SendMsg = "00000003" + GetXzDataSocket(DtPos.Rows[iSWAPREC]["swaprec"].ToString());
byte[] textBuffer = System.Text.Encoding.Default.GetBytes(SendMsg);
SendTotal = SendLX + SendMsg + CRC16(textBuffer);
CS.Send(SendTotal);
//count = 0;
while (true)
{
Thread.Sleep(100);
AceeMsg = CS.AcceptStr;
if (AceeMsg != null)
{
if (AceeMsg.Substri