关于java做email服务的问题,紧急求助
ejar 2001-06-09 07:19:00 本人在一个email的简单演示程序中遇到了一点小问题,恳求各位大侠拔刀相助.
其中先编写了一个服务器端的程序udp,编译,运行均通过.大侠可以略过
package mail;
import java.net.*;
import java.io.*;
public class UDP {
public static void main(String args[])
{ int port=6543;
udpthread my=new udpthread(port);
my.start();
}
}
class udpthread extends Thread{
private DatagramSocket udpserversocket=null;
public udpthread(int port)
{
try{
udpserversocket=new DatagramSocket(port);
System.out.println("邮件服务器在端口"+udpserversocket.getLocalPort()+"\n");
}
catch(Exception e)
{System.err.println(e);}
}
public void run()
{
if(udpserversocket==null)
return;
while(true)
{
try{
byte databuf[]=new byte[512];
DatagramPacket serverpacket;
InetAddress host;
int port;
String datagram,s;
serverpacket=new DatagramPacket(databuf,512);
udpserversocket.receive(serverpacket);
host=serverpacket.getAddress();
port=serverpacket.getPort();
datagram=new String(serverpacket.getData());
System.out.println("收到邮件"+host.getHostName()+":"+"\n"+datagram);
datagram=new String(host.getHostName()+":\n"+
InetAddress.getLocalHost().getHostName()+
"服务器已经处理了您的mail信息"+"hello:");
for(int i=0;i<512;i++)
databuf[i]=0;
datagram.getBytes(0,datagram.length(),databuf,0);
serverpacket=new DatagramPacket(databuf,databuf.length,host,port);
udpserversocket.send(serverpacket);
}
catch(Exception e)
{System.out.println(e);}
}
}
protected void finalize()
{if(udpserversocket!=null)
{udpserversocket.close();
udpserversocket=null;
System.out.println("关闭服务器的数据连接");
}
}
}
问题在client端,当我向服务器发送一串固定的字符信息时,此时运行可以成功(把下面标注释的语句改写成一个简单的application程序).但是当我在applet上加上TextArea之后,确始终为成功,原代码如下:
//package mail;
import java.io.*;
import java.net. *;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class clientmail extends Applet implements ActionListener
{
DatagramSocket udpclientsocket;
DatagramPacket clientpacket;
InetAddress host;
int port;
byte databuf[]=new byte[512];
String datagram,s;
TextArea mailcontent;
Button send;
Label receive;
public void init()
{mailcontent=new TextArea(10,45);
send=new Button("发送信息");
add(mailcontent);
add(send);
// add(receive);
send.addActionListener(this);
port=6543;
try{
udpclientsocket=new DatagramSocket(1234);
host=InetAddress.getLocalHost();
//datagram=new String("这封信来自"+InetAddress.getLocalHost());//发送固定的字符信息
//datagram.getBytes(0,datagram.length(),databuf,0);
clientpacket=new DatagramPacket(databuf,512,host,port);
//udpclientsocket.send(clientpacket);
//for(int i=0;i<512;i++)
//databuf[i]=0;
//udpclientsocket.receive(clientpacket);
//datagram=new String(clientpacket.getData());
//System.out.println("从服务器上收到信息");
//System.out.println(datagram);
//udpclientsocket.close();
}
catch(Exception e)
{System.out.println(e);}
}
public void actionPerformed(ActionEvent e)
{
try{
datagram=new String("mailcontent.getText()");//发送TextArea内的字符信息
datagram.getBytes(0,datagram.length(),databuf,0);
clientpacket=new DatagramPacket(databuf,512,host,port);
udpclientsocket.send(clientpacket);
for(int i=0;i<512;i++) databuf[i]=0;
udpclientsocket.receive(clientpacket);
s=new String(clientpacket.getData());
}
catch(Exception e1){}
repaint();
}
public void paint(Graphics g)
{g.drawString(s,40,300);}
}
改进的client端程序编译通过,但是运行是始终未成功,不知是和原因^^!?
本人爱好java编程,愿意与广大java高手结为好友.qq:59830882 ejar@263.net
顺便问一下,在大连什么地方可以报名java认证,费用是多少??