在上两篇博文(如何使用W7100A实现Telnet服务器(一)、如何使用W7100A实现Telnet服务器(二))里我们简单地介绍一下Telnet,第三章将会演示Telnet函数的具体功能,第四章将涉及到代码的分析。这篇文档中所有的示例代码都是基于Keil uVision3。
第一篇在这里:http://blog.csdn.net/wiznet2012/article/details/7721006
第二篇在这里:http://blog.csdn.net/wiznet2012/article/details/7728408
下面我们介绍第三部分(主要内容是第四章的余下的代码分析部分):
4.3 tel_input()函数
tel_input()函数用来处理Telnet终端机内的输入命令。具体每一个命令以及处理方法请参考表3.1。
void tel_input(SOCKET s)
{
uint8 xdata c;
while(1){
if((getSn_RX_RSR(s)) == 0) break; /*如果没有接收到的数据,断开*/
if(recv(s, &c, 1) == 0) break; /*如果接收到的数据为0,断开*/
if(user_state == LOGOUT) break; /*如果用户的声明是LOGOUT, 断开*/
if(c != IAC){ /*如果接收到的数据不是控制字符*/
data_buf[buf_index++] = c; /*保存接收到的数据到data_buf*/
putchar(c);
if(user_state == LOGOUT) break;
if(user_state != PASSWORD){
sprintf(buf, "%c", c);
send(s, buf, strlen(buf));
}
if(c == 'n'){ /*如果接收到一个n’ ASCII 代码*/
if(buf_index > 1){
if(data_buf[buf_index-2] == 'r') data_buf[buf_index-2] = '
|