要实现的功能是:Telnet方式登陆多台服务器(IP不同,Port是23),收发指令;连一台服务器的流程是:
通过IP连服务器;
连接成功,根据服务器返回的输入用户名和密码提示,回复用户名和密码;
登陆成功,从数据库提取100条未处理的记录,发指令处理;
处理成功一条修改一条记录;
100条处理完成,继续取指令;处理思路:
用控制台程序实现,一台服务器建一个Socket,放在1个线程去执行;
连接10台服务器的话,创建10个socket,开10个线程,不知是否可行?碰到的问题有:
保持Socket长连接的问题,如果1分钟没向服务器发指令,就会自动断开连接;
连接一台服务器基本可以完成操作,但是连接多台就出现问题,不清楚是否指令回复错误?
向服务器发用户名和密码时用到Thread.Sleep延时,别的地方没有用到延时;
如果不用延时,服务器就连接失败,可能服务器以为频繁发送数据包放弃处理;实现方式是:
int main()
{
 //开一个线程序可以正常发指令,2个线程就导致登陆失败。 //通过IP1创建objCommand1和线程1(Run) //通过IP2创建objCommand2和线程2(Run)
}//Command类class Command
{
    public Command(string IP) //IP区分不同服务器
    {
    }   
   public bool SendCommand()
   {
      //反复提取未处理记录,并发指令      //创建Socket,连接服务器       //登陆      //发送指令
   }    public void Run()
   { 
     while(true)
     {
       SendCommand();
     }
   }    
}