在上兩篇博文(如何使用W7100A實(shí)現(xiàn)Telnet服務(wù)器(一)、如何使用W7100A實(shí)現(xiàn)Telnet服務(wù)器(二))里我們簡單地介紹一下Telnet,第三章將會演示Telnet函數(shù)的具體功能,第四章將涉及到代碼的分析。這篇文檔中所有的示例代碼都是基于Keil uVision3。
第一篇在這里:http://blog.csdn.net/wiznet2012/article/details/7721006
第二篇在這里:http://blog.csdn.net/wiznet2012/article/details/7728408
下面我們介紹第三部分(主要內(nèi)容是第四章的余下的代碼分析部分):
4.3 tel_input()函數(shù)
tel_input()函數(shù)用來處理Telnet終端機(jī)內(nèi)的輸入命令。具體每一個命令以及處理方法請參考表3.1。
void tel_input(SOCKET s)
{
uint8 xdata c;
while(1){
if((getSn_RX_RSR(s)) == 0) break; /*如果沒有接收到的數(shù)據(jù),斷開*/
if(recv(s, &c, 1) == 0) break; /*如果接收到的數(shù)據(jù)為0,斷開*/
if(user_state == LOGOUT) break; /*如果用戶的聲明是LOGOUT, 斷開*/
if(c != IAC){ /*如果接收到的數(shù)據(jù)不是控制字符*/
data_buf[buf_index++] = c; /*保存接收到的數(shù)據(jù)到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] = '
|