1、相关知识 java IO流、线程安全、UTP等等
UTP用来通信(发短信,发邮箱等等)有发送端和接收端
发送端:
(1)建立DatagreamSocket类
(2)建立BufferedReader类用来从键盘上输入,
(3)建立包DatagremPacket
(4)发送包
(5)关闭资源
package io.utp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;
//模拟聊天 客户端
public class DayUtp2 implements Runnable{
DatagramSocket socket=null;
BufferedReader reader=null;
private int foprot;
private String toip;
private int toport;
public DayUtp2(int foprot, String toip, int toport) {
this.foprot = foprot;
this.toip = toip;
this.toport = toport;
try {
socket=new DatagramSocket(foprot);
reader=new BufferedReader(new InputStreamReader(System.in));
} catch (SocketException e) {
e.printStackTrace();
}
}
@Override
public void run() {
while(true){
try {
String s = reader.readLine();
byte[] bytes = s.getBytes();
DatagramPacket packet = new DatagramPacket(bytes, 0, bytes.length, new InetSocketAddress(this.toip, this.toport));
socket.send(packet);//发送数据
if(bytes.equals("再见")){
break;
}
} catch (IOException e) {
e.printStackTrace();
}
}
socket.close();
}
}
接收端
(1)建立DatagreamSocket用来接收包
(2)建立接收包
(3)关闭资源
package io.utp;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class DayUtp3 implements Runnable{
DatagramSocket socket=null;
private int port;
private String name;
public DayUtp3(int port, String name) {
this.port = port;
this.name = name;
try {
socket=new DatagramSocket(port);
} catch (SocketException e) {
e.printStackTrace();
}
}
@Override
public void run() {
while (true){
try {
byte[] bytes = new byte[1024];
DatagramPacket packet = new DatagramPacket(bytes,0,bytes.length);//新建包 用来接收数据
socket.receive(packet);
byte[] data = packet.getData();//获取数据
String s = new String(data, 0,packet.getLength());
if(s.equals("再见")){
break;
}
System.out.println(name+":"+s);
} catch (IOException e) {
e.printStackTrace();
}
}
socket.close();
}
}