当前位置: 技术问答>linux和unix
telnet的回显问题。
来源: 互联网 发布时间:2016-08-27
本文导语: 2个线程,读线程和写线程,写线程负责将键盘输入发送到服务器端,读线程负责回显 ================================ 写线程 tcsetattr(不回显) getchar tcsetattr(回显) send(发送到服务器) ================================ 读线程...
2个线程,读线程和写线程,写线程负责将键盘输入发送到服务器端,读线程负责回显
================================
写线程
tcsetattr(不回显)
getchar
tcsetattr(回显)
send(发送到服务器)
================================
读线程
循环
recv(取得服务器的回显文字)
显示
--------------------------------
现在操作有一个问题,当进入getchar等待键盘输入时,因为设置为不回显,所以服务器接受的文字页不显示了。怎么协调写和读?
================================
写线程
tcsetattr(不回显)
getchar
tcsetattr(回显)
send(发送到服务器)
================================
读线程
循环
recv(取得服务器的回显文字)
显示
--------------------------------
现在操作有一个问题,当进入getchar等待键盘输入时,因为设置为不回显,所以服务器接受的文字页不显示了。怎么协调写和读?
|
输入数据设置为非阻塞的方式,接收数据放入一个缓冲区,当输入数据函数等待超时后就判断接收缓冲是否有数据,如有则显示,没有则等待用户输入.这样就可以了。
|
如果你紧紧是为了在服务器端也能看到输入的数据的话,可以加上printf()函数,把你输入的字符打印到当前标准输出,后面在用fflush(NULL);刷新下。程序如下:
写线程
tcsetattr(不回显)
getchar
printf()
fflush(NULL)
tcsetattr(回显)
send(发送到服务器)
写线程
tcsetattr(不回显)
getchar
printf()
fflush(NULL)
tcsetattr(回显)
send(发送到服务器)