学习代码的思路:先找到一个切入点--自己最感兴趣的部分,作为研究代码的入口。然后根据方法之间的调用,顺藤摸瓜的研究下去。
就这个java的开源网络包的研究来说,我是以WeatherTelnet这个类为切入点来研究的。
WeatherTelnet这个类有一个main方法,相当对于一个可执行程序。代码的思路很清晰: 在WeatherTelnet的main方法中,声明一个TelnetClient对象并实例化。然后建立一个网络连接,具体是什么连接,咱们先不管。接下来是通过一个IO实用程序的读写方法readWrite,处理从这个连接中获取一个输入流和输入流,以及标准输入输出。最后是关闭连接,退出程序。
接下来,咱们的研究重点放在这个IO实用程序的读写操作上。
在这个读写方法中,声明了两个线程,一个读线程,一个写线程。读线程负责从标准输入System.in中读取用户的操作,并写到telnet的输出流中:
ch=localInput.read()
remoteOutput.write(ch);
remoteOutput.flush();
写线程负责把远程输入流的数据写到标准输出System.out中:
Util.copyStream(remoteInput, localOutput);
就这个java的开源网络包的研究来说,我是以WeatherTelnet这个类为切入点来研究的。
WeatherTelnet这个类有一个main方法,相当对于一个可执行程序。代码的思路很清晰: 在WeatherTelnet的main方法中,声明一个TelnetClient对象并实例化。然后建立一个网络连接,具体是什么连接,咱们先不管。接下来是通过一个IO实用程序的读写方法readWrite,处理从这个连接中获取一个输入流和输入流,以及标准输入输出。最后是关闭连接,退出程序。
接下来,咱们的研究重点放在这个IO实用程序的读写操作上。
在这个读写方法中,声明了两个线程,一个读线程,一个写线程。读线程负责从标准输入System.in中读取用户的操作,并写到telnet的输出流中:
ch=localInput.read()
remoteOutput.write(ch);
remoteOutput.flush();
写线程负责把远程输入流的数据写到标准输出System.out中:
Util.copyStream(remoteInput, localOutput);