JAVA方面的,求个源程序!谢谢了。

powerchuangwai 2010-09-20 11:02:32
就只有37分了,呵呵。


求 用socket,seversocket实现的SMTP、POP3邮件服务器的源程序。



谢谢大家了。后面再加分。
...全文
271 29 点赞 打赏 收藏 举报
写回复
29 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
powerchuangwai 2010-09-29
呵呵,谢谢了,问一下,基于socket通信,可以实现B/S模式的应用吗?

也就是说在B/S模式下,可以使用socket通信吗?
  • 打赏
  • 举报
回复
wisereach 2010-09-29
网上有很多。自己搜吧
  • 打赏
  • 举报
回复
powerchuangwai 2010-09-29
肯请有人指点迷津。。。
  • 打赏
  • 举报
回复
QQ153984069 2010-09-28
[Quote=引用 22 楼 powerchuangwai 的回复:]
楼上的哥们,哪个是服务器端, 哪个是客户端?
[/Quote]
ServerSocketConnectionDemo是服务器端
ClientSocketConnectionDemo是客户端
  • 打赏
  • 举报
回复
LOVE小葡萄 2010-09-28
貌似有人写过了。搜索下吧
  • 打赏
  • 举报
回复
powerchuangwai 2010-09-28
谢谢各位,又加了十分,期待有人回答。。
  • 打赏
  • 举报
回复
powerchuangwai 2010-09-27
楼上的哥们,哪个是服务器端, 哪个是客户端?
  • 打赏
  • 举报
回复
QQ153984069 2010-09-27
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;

import javax.microedition.io.Connector;
import javax.microedition.io.ServerSocketConnection;
import javax.microedition.io.SocketConnection;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class ServerSocketConnectionDemo extends MIDlet
implements Runnable, CommandListener {
private Display display = null;

private Form form = new Form("Socket服务器演示");
//用于输入要发送的消息
private TextField tfData = new TextField("请输入发送的消息",
"",255,TextField.ANY);

//定义使用的命令按钮
private Command cmdExit = new Command("退出", Command.EXIT, 0);
private Command cmdSend = new Command("发送", Command.SCREEN, 1);

//线程运行标志
private boolean isRunning = true;

private DataInputStream dis = null;
private DataOutputStream dos = null;
private ServerSocketConnection scn = null;

public ServerSocketConnectionDemo() {
super();

form.append(tfData);
form.addCommand(cmdExit);
form.addCommand(cmdSend);
form.setCommandListener(this);
}

protected void startApp() throws MIDletStateChangeException {
display = Display.getDisplay(this);
display.setCurrent(form);

//开始服务器线程
new Thread(this).start();
}

protected void pauseApp() {
//暂停时要关闭Socket连接
close();
}

protected void destroyApp(boolean arg0)
throws MIDletStateChangeException {
close();
}

/**
* 处理命令按钮事件
*/
public void commandAction(Command cmd, Displayable d) {
if (cmd == cmdExit) {
isRunning = false;
notifyDestroyed();
} else if(cmd == cmdSend) {
//发送数据
new Thread() {
public void run() {
if (dos == null) {
return;
}
String str = tfData.getString();
try {
dos.writeUTF(str);
} catch (IOException e) {
e.printStackTrace();
}
//显示发送的消息
form.append("[S] " + str + "\n");
}
}.start();
}
}

/**
* 服务器线程
*/
public void run() {
isRunning = true;
try {
scn = (ServerSocketConnection) Connector.open("socket://:9999");
form.append("连接端口9999...\n");
form.append("Local address: " + scn.getLocalAddress()+"\n");
form.append("Local Port: " + scn.getLocalPort()+"\n");

//等待客户端的连接
SocketConnection sc = (SocketConnection)scn.acceptAndOpen();
form.append("连接已经接受\n");
//获得输入流
dis = sc.openDataInputStream();
//获得输出流
dos = sc.openDataOutputStream();

while (isRunning) {
String str = dis.readUTF();
//休息1秒
Thread.sleep(1000);
//显示接收到的消息
form.append("[R] " + str + "\n");
}
sc.close();
sc = null;
form.append("连接已经关闭");
} catch (Exception e) {
e.printStackTrace();
//客户端关闭连接
form.append("客户端连接断开,重新监听");
close();
new Thread(this).run();
} finally {
close();
}
}

/**
* 关闭Socket连接
*/
public void close() {
try {
isRunning = false;

if (dis != null) {
dis.close();
dis = null;
}

if (dos != null) {
dos.close();
dos = null;
}

if (scn != null) {
scn.close();
scn = null;
}

} catch (Exception e) {
e.printStackTrace();
}
}

}
  • 打赏
  • 举报
回复
QQ153984069 2010-09-27
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;

import javax.microedition.io.Connector;
import javax.microedition.io.SocketConnection;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class ClientSocketConnectionDemo extends MIDlet
implements Runnable, CommandListener {
private Display display = null;

private Form form = new Form("Socket客户端演示");
//用于输入服务器地址
private TextField tfAddress = new TextField("服务器地址",
"127.0.0.1",255,TextField.ANY);
//用于输入服务器端口
private TextField tfPort = new TextField("服务器端口",
"9999",6,TextField.ANY);
//用于输入要发送的消息
private TextField tfData = new TextField("请输入发送的消息",
"",255,TextField.ANY);

private Command cmdExit = new Command("退出", Command.EXIT, 0);
private Command cmdSend = new Command("发送", Command.SCREEN, 1);
private Command cmdConnect = new Command("连接", Command.SCREEN, 1);

//线程运行标志
private boolean isRunning = true;

private DataInputStream dis = null;
private DataOutputStream dos = null;
private SocketConnection scn = null;

public ClientSocketConnectionDemo() {
super();

form.append(tfAddress);
form.append(tfPort);
form.append(tfData);
form.addCommand(cmdExit);
form.addCommand(cmdConnect);
form.setCommandListener(this);
}

protected void startApp() throws MIDletStateChangeException {
display = Display.getDisplay(this);
display.setCurrent(form);
}

protected void pauseApp() {
close();

}

protected void destroyApp(boolean arg0)
throws MIDletStateChangeException {
close();
}

/**
* 处理命令按钮事件
*/
public void commandAction(Command cmd, Displayable d) {
if (cmd == cmdExit) {
isRunning = false;
notifyDestroyed();
} else if(cmd == cmdSend) {
//发送数据
new Thread() {
public void run() {
if (dos == null) {
return;
}
String str = tfData.getString();
try {
dos.writeUTF(str);
} catch (IOException e) {
e.printStackTrace();
}
//显示发送的消息
form.append("[S] " + str + "\n");
}
}.start();
} else if (cmd == cmdConnect) {
form.removeCommand(cmdConnect);
form.addCommand(cmdSend);

//开始客户端线程
new Thread(this).start();
}
}

/**
* 客户端线程
*/
public void run() {
isRunning = true;
try {
String constr = "socket://"+ tfAddress.getString()
+ ":" + tfPort.getString();
scn = (SocketConnection) Connector.open(constr);
scn.setSocketOption(SocketConnection.DELAY, 0);
scn.setSocketOption(SocketConnection.LINGER, 5);
scn.setSocketOption(SocketConnection.KEEPALIVE, 0);
scn.setSocketOption(SocketConnection.RCVBUF, 128);
scn.setSocketOption(SocketConnection.SNDBUF, 128);

form.append("连接"+constr+"\n");
form.append("Local address: " + scn.getLocalAddress()+"\n");
form.append("Local Port: " + scn.getLocalPort()+"\n");

//获得输入流
dis = scn.openDataInputStream();
//获得输出流
dos = scn.openDataOutputStream();

while (isRunning) {
String str = dis.readUTF();
//休息1秒
Thread.sleep(1000);
//显示接收到的消息
form.append("[R] " + str+"\n");
}
form.append("连接已经关闭");
} catch (Exception e) {
e.printStackTrace();
//服务器关闭连接
form.append("服务器连接断开");
close();
} finally {
close();
}
}

/**
* 关闭Socket连接
*/
public void close() {
try {
isRunning = false;

if (dis != null) {
dis.close();
dis = null;
}

if (dos != null) {
dos.close();
dos = null;
}

if (scn != null) {
scn.close();
scn = null;
}

form.removeCommand(cmdSend);
form.addCommand(cmdConnect);
} catch (Exception e) {
e.printStackTrace();
}
}

}
  • 打赏
  • 举报
回复
powerchuangwai 2010-09-26
怎么还没有可以采纳的答案呀。再加10分。
  • 打赏
  • 举报
回复
renjianguokeivor 2010-09-26
刚开始学,帮顶
  • 打赏
  • 举报
回复
powerchuangwai 2010-09-25
又加了10分。。

大家多讨论呀。
  • 打赏
  • 举报
回复
shijieyounihao 2010-09-25
以前印象中好像也有人问过。
  • 打赏
  • 举报
回复
wubo1234 2010-09-25
这个很难吗?自己作曲
  • 打赏
  • 举报
回复
njfengxue 2010-09-25
帮你顶一下!虽然不会,o(∩_∩)o...哈哈
  • 打赏
  • 举报
回复
powerchuangwai 2010-09-25
这个问题 真的好难吗:?
  • 打赏
  • 举报
回复
大定来项啊
  • 打赏
  • 举报
回复
yktd26 2010-09-22
你这是要实现一个邮件服务器还是实现与一个邮件服务器通话,来发送或者接受邮件?
而且建议这种问题可能google比csdn好,你要的是个整个一个项目的源码,这里恐怕没有google好用,
或者可以去csdn下载频道找找看
  • 打赏
  • 举报
回复
powerchuangwai 2010-09-21
这个问题难吗?
  • 打赏
  • 举报
回复
zcp1985 2010-09-21
为了加分而来 确实没做过这类的
  • 打赏
  • 举报
回复
加载更多回复
相关推荐
发帖
J2ME
创建于2007-09-28

1.3w+

社区成员

Java J2ME
申请成为版主
帖子事件
创建了帖子
2010-09-20 11:02
社区公告
暂无公告