当前位置: 技术问答>java相关
真正请教:Serializable接口有哪些主要作用,为什么它与Socket类可实现邮件发送?在概念或原理上是如何实现的呢?
来源: 互联网 发布时间:2015-01-11
本文导语: public class SMTPBean implements Serializable{ private Socket smtp; private BufferedReader input; private PrintStream output; private String smtpServer = "smtp.szptt.net.cn"; private String serverReply; private int port = 25; public SMTPBean() { } publ...
public class SMTPBean implements Serializable{
private Socket smtp;
private BufferedReader input;
private PrintStream output;
private String smtpServer = "smtp.szptt.net.cn";
private String serverReply;
private int port = 25;
public SMTPBean() {
}
public void connect() throws SMTPException {
try {
smtp = new Socket(smtpServer, port);
input = new BufferedReader(new InputStreamReader(smtp.getInputStream()));
output = new PrintStream(smtp.getOutputStream());
serverReply = input.readLine();
if (serverReply.charAt(0) == '2' || serverReply.charAt(0) == '3') {
}
else {
throw new SMTPException("Error connecting to SMTP server " + smtpServer + " on port " + port);
}
}
catch(Exception e) {
throw new SMTPException(e.getMessage());
}
}
private Socket smtp;
private BufferedReader input;
private PrintStream output;
private String smtpServer = "smtp.szptt.net.cn";
private String serverReply;
private int port = 25;
public SMTPBean() {
}
public void connect() throws SMTPException {
try {
smtp = new Socket(smtpServer, port);
input = new BufferedReader(new InputStreamReader(smtp.getInputStream()));
output = new PrintStream(smtp.getOutputStream());
serverReply = input.readLine();
if (serverReply.charAt(0) == '2' || serverReply.charAt(0) == '3') {
}
else {
throw new SMTPException("Error connecting to SMTP server " + smtpServer + " on port " + port);
}
}
catch(Exception e) {
throw new SMTPException(e.getMessage());
}
}
|
Serializable 只是一个空的接口而已,其目的只是告诉Java Compiler,本类是支持序列化的,没有其他用处。
至于这段程序为什么可以实现与SMTP Server 的连接(注意,只是连接,并不能发信什么的,因为并没按SMTP的协议发出指令),那是因为SMTP Server 缺省是在 25 这个端口侦听,它只是一个普通的Socket 服务程序而已,你用Socket 客户端当然可以连接了。
至于这段程序为什么可以实现与SMTP Server 的连接(注意,只是连接,并不能发信什么的,因为并没按SMTP的协议发出指令),那是因为SMTP Server 缺省是在 25 这个端口侦听,它只是一个普通的Socket 服务程序而已,你用Socket 客户端当然可以连接了。
|
Serializable接口本身并没有任何方法和属性,一个类从它继承,仅仅是说明了它可串行化。Socket类可用来连接服务器(只要提供了服务器地址和端口),这里实际上是用
Socket来实现一个SMTP客户端,你连接上服务器之后,只要遵从rfc:smtp标准协议,通过
向输出流中写入指令,便可完成收发电子邮件的功能了。
你这里就是不实现Serializable接口同样可以
Socket来实现一个SMTP客户端,你连接上服务器之后,只要遵从rfc:smtp标准协议,通过
向输出流中写入指令,便可完成收发电子邮件的功能了。
你这里就是不实现Serializable接口同样可以