Cyh的博客
Email:kissyan4916@163.com
posts - 26, comments - 19, trackbacks - 0, articles - 220
导航
BlogJava
首页
新随笔
联系
聚合
管理
公告
一直努力努力努力,像奴隶奴隶奴隶!~~
<
2024年12月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
常用链接
我的随笔
我的文章
我的评论
我的参与
最新评论
随笔档案
(25)
2011年5月 (1)
2010年4月 (12)
2010年1月 (1)
2009年12月 (2)
2009年6月 (1)
2009年4月 (4)
2009年2月 (4)
文章分类
(219)
Android(26)
DB(5)
J2EE(31)
J2SE(79)
JavaScript(15)
others(47)
SOA&Web Service(1)
中间件(1)
软件工程(12)
软件架构(2)
文章档案
(220)
2011年8月 (1)
2010年12月 (23)
2010年11月 (2)
2010年8月 (5)
2010年7月 (2)
2010年6月 (2)
2010年5月 (1)
2010年4月 (12)
2010年3月 (28)
2010年2月 (5)
2010年1月 (23)
2009年12月 (39)
2009年6月 (14)
2009年5月 (31)
2009年3月 (2)
2009年2月 (29)
2009年1月 (1)
新闻档案
(66)
2010年10月 (1)
2010年9月 (5)
2010年8月 (11)
2010年7月 (21)
2010年6月 (13)
2010年5月 (8)
2010年4月 (5)
2009年11月 (2)
相册
Ryan
收藏夹
(7)
JAVA(7)
最新随笔
1. 集成FCKeditor 3.5.3
2. android自适应屏幕方向和大小
3. Android游戏开发之旅(二十) 双按事件捕获
4. Android游戏开发之旅(十八) SoundPool类
5. Android游戏开发之旅(十九) 分辨率大全
6. Android游戏开发之旅(十七) 图像渐变特效
7. Android游戏开发之旅(十六) 异步音乐播放
8. Android游戏开发之旅(十四) 游戏开发实战一
9. Android游戏开发之旅(十五) 按键中断处理
10. Android游戏开发之旅(十二)Sensor重力感应(2)
搜索
最新评论
1. re: struts2 checkboxlist标签的使用
同居同意同意
--yuk
2. re: struts2 checkboxlist标签的使用
ss
--d
3. re: JavaMail(4)--使用POP3接收邮件
邮件信息可以打印出来,可是下载邮件会出错是什么原因?
--琳喵喵0721
4. re: JavaMail(4)--使用POP3接收邮件
评论内容较长,点击标题查看
--流风
5. re: 操作PDF文件
评论内容较长,点击标题查看
--ly.wolf
阅读排行榜
1. struts2 checkboxlist标签的使用(18226)
2. struts2异常拦截器(5857)
3. struts2迭代标签(3845)
4. 用freemind 秒杀Spring Security(1914)
5. 加载顺序会影响对spring bean 的调用。(1489)
网络编程>>Telnet客户端
Posted on 2009-12-17 22:27
啥都写点
阅读(903)
评论(0)
编辑
收藏
所属分类:
J2SE
实现Telnet客户端的关键技术如下:
访问系统的Telnet服务实质上是与Telnet服务建立Socket连接,默认的Telnet服务的端口是23
Telnet客户端将标准输入流中的命令发送给Telnet服务,将响应消息显示在标准输出流中。因此,Telnet客户端相当于一个代理服务,起中转作用,将标准输入流、Telnet服务和标准输出流连接起来。
import
java.io.BufferedReader;
import
java.io.IOException;
import
java.io.InputStream;
import
java.io.InputStreamReader;
import
java.io.OutputStream;
import
java.io.PrintStream;
import
java.net.Socket;
/** */
/**
* Telnet客户端,可以登陆到Telnet服务器。
*/
public
class
TelnetClient
{
//
默认的Telnet服务器名
public
static
final
String DEFAULT_HOST
=
"
127.0.0.1
"
;
//
默认的Telnet服务器端口
public
static
final
int
DEFAULT_PORT
=
23
;
//
主机名(或者IP)和端口号
private
String host;
private
int
port;
//
连接主机的socket
Socket socket
=
null
;
//
发送数据和接收数据的管道,Pipe为自定义类
Pipe sendPipe
=
null
;
Pipe receivePipe
=
null
;
//
默认构造方法
public
TelnetClient()
{
this
.host
=
DEFAULT_HOST;
this
.port
=
DEFAULT_PORT;
}
public
TelnetClient(String host,
int
port)
{
this
.host
=
host;
this
.port
=
port;
}
/** */
/**
* 登陆到服务器
*/
public
void
telnet()
{
System.out.println(
"
Connecting to telnet server
"
+
host
+
"
:
"
+
port);
try
{
socket
=
new
Socket(host, port);
//
将socket的输入端数据(来自服务器端)流向本地标准输出,即接收数据
receivePipe
=
new
Pipe(socket.getInputStream(), System.out);
receivePipe.start();
//
将本地的标准输入数据流向socket的输出端,即流向服务器端,发送数据
sendPipe
=
new
Pipe(System.in, socket.getOutputStream());
sendPipe.start();
}
catch
(IOException e)
{
System.out.println(
"
连接失败:
"
+
e);
return
;
}
System.out.println(
"
连接成功
"
);
}
/** */
/**
* 断开连接
*/
public
void
disconnect()
{
if
(socket
!=
null
)
{
try
{
socket.close();
System.out.println(
"
成功断开连接
"
);
}
catch
(IOException e)
{
e.printStackTrace();
}
}
}
public
static
void
main(String[] argv)
{
new
TelnetClient().telnet();
}
}
/** */
/**
* 管道类,将输入流的数据写入到输出流中。
* 是一个线程,可以独立运行
*/
class
Pipe
extends
Thread
{
//
管道的输入流和输出流
BufferedReader is;
PrintStream os;
/** */
/**
* 构造方法,构造输入输出流
*
@param
is
*
@param
os
*/
Pipe(InputStream is, OutputStream os)
{
this
.is
=
new
BufferedReader(
new
InputStreamReader(is));
this
.os
=
new
PrintStream(os);
}
/** */
/**
* 线程体方法,将输入流的数据写入到输出流
*/
public
void
run()
{
String line;
try
{
//
读取输入流的数据
while
((line
=
is.readLine())
!=
null
)
{
//
写到输出流中
os.print(line);
os.print(
"
\r\n
"
);
os.flush();
}
}
catch
(IOException e)
{
}
}
}
--
学海无涯
Powered by:
BlogJava
Copyright © 啥都写点