网络编程
- 网络编程是指编写运行在多个设备上的程序,这些设备通过网络连接
- java.net包中提供了TCP、UDP包
socket编程
- 套接字使用TCP提供了两台计算机之间的通信机制。 客户端程序创建一个套接字,并尝试连接服务器的套接字。当连接建立时,服务器会创建一个 Socket 对象。客户端和服务器现在可以通过对 Socket 对象的写入和读取来进行通信。java.net.Socket 类代表一个套接字,并且 java.net.ServerSocket 类为服务器程序提供了一种来监听客户端,并与他们建立连接的机制。
TCP客户端的实现
import java.io.*;
import java.net.*;
public class tcpserver extends Thread {
private ServerSocket serverSocket;
public tcpserver(int port) throws IOException{
serverSocket = new ServerSocket(port);
serverSocket.setSoTimeout(10000);
}
public void run()
{
while(true)
{
try
{
System.out.println("等待远程连接,端口号为:" + serverSocket.getLocalPort() + "...");
Socket server = serverSocket.accept();
System.out.println("远程主机地址:" + server.getRemoteSocketAddress());
DataInputStream in = new DataInputStream(server.getInputStream());
System.out.println(in.readUTF());
DataOutputStream out = new DataOutputStream(server.getOutputStream());
out.writeUTF("谢谢连接我:" + server.getLocalSocketAddress() + "\nGoodbye!");
server.close();
}catch(SocketTimeoutException s)
{
System.out.println("Socket timed out!");
break;
}catch(IOException e)
{
e.printStackTrace();
break;
}
}
}
public static void main(String [] args)
{
int port = 8888;
try
{
Thread t = new tcpserver(port);
t.run();
}catch(IOException e)
{
e.printStackTrace();
}
}
}
TCP客户端的实现
import java.io.*;
import java.net.*;
public class tcpclient {
String serverName = "127.0.0.1";
Integer port = 8888;
public void connect(){
try{
System.out.println("Connnecting to "+serverName +":"+port.toString());
Socket client = new Socket(serverName, port);
System.out.println("Remote Host Address"+client.getRemoteSocketAddress());
OutputStream newOutPutStream = client.getOutputStream();
DataOutputStream outData = new DataOutputStream(newOutPutStream);
outData.writeUTF("Hello from " + client.getLocalAddress());
InputStream newInputStream = client.getInputStream();
DataInputStream inputData = new DataInputStream(newInputStream);
System.out.println("Response: "+inputData.readUTF());
client.close();
}catch(IOException err){
err.printStackTrace();
}
}
public static void main(String[] args){
tcpclient cli = new tcpclient();
cli.connect();
}
}
发送邮件
- 需要先安装JavaMail API和Java Activation Framework(JAF)
- 从官网下载
- 把mail.jar和activation.jar添加到CLASSPATH中
发送一封简单的邮件
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
public class mail {
public void sendmail(){
String to = "abcd@gmail.com";
String from = "web@gmail.com";
String host = "localhost";
Properties properties = System.getProperties();
properties.setProperty("mail.smtp.host", host);
Session session = Session.getDefaultInstance(properties);
try{
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));
message.setSubject("This is the Subject Line!");
message.setText("This is actual message");
Transport.send(message);
System.out.println("Sent message successfully....");
}catch (MessagingException mex) {
mex.printStackTrace();
}
}
}