要实现的功能是: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();
}
}
}
通过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();
}
}
}
服务器为什么可以接收多个客户端的请求呢?
这不就完了吗?