基于UDP的网络通信是通过数据包进行数据传输,不需建立连接,不可靠
/*
* 用UDP接发数据
*/
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Scanner;
public class UDPSend{
public static void main(String[] args) {
SendReceive receive=new SendReceive();
SendSend send=new SendSend();
Thread sendThread=new Thread(send);
Thread receiveThread=new Thread(receive);
System.out.println("乙----开始聊天");
sendThread.start();
receiveThread.start();
try {
sendThread.sleep(00);
receiveThread.sleep(00);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// while (true) {
// send();
// receive();
// }
// }
}
}
public class UDPReceive {
public static void main(String[] args) {
// while (true) {
// receive();
// send();
// }
ReceiveReceive receive=new ReceiveReceive();
ReceiveSend send=new ReceiveSend();
Thread sendThread=new Thread(send);
Thread receiveThread=new Thread(receive);
System.out.println("甲----开始聊天");
sendThread.start();
receiveThread.start();
try {
sendThread.sleep(00);
receiveThread.sleep(00);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
运行结果:
甲—-开始聊天
你说:2015年08月16日 17:06:07
你好,我是甲
开始发送
你说:2015年08月16日 17:06:20
你呢?
开始发送
你说:2015年08月16日 17:06:35
对方说:2015年08月16日 17:06:07
我是乙,你好,甲
乙—-开始聊天
你说:2015年08月16日 17:06:01
对方说:2015年08月16日 17:06:01
你好,我是甲
对方说:2015年08月16日 17:06:20
你呢?我是甲
我是乙,你好,甲
开始发送
你说:2015年08月16日 17:06:49
URL
* 将网页上的图片写到文件上
*/
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
public class ImgURLTest {
public static void main(String[] args) {
try {
URL imgURL=new URL("http://pic.nipic.com/2007-11-09/2007119121849495_2.jpg");
File imgfile=new File("d:\\3.jpg");
if (!imgfile.exists()) {
imgfile.createNewFile();
}
OutputStream os=new FileOutputStream(imgfile);
InputStream is=imgURL.openStream();
byte[] array=new byte[512];
int i=is.read(array);
while (i!=-1) {
os.write(array, 0, i);
i=is.read(array);
}
os.flush();
os.close();
is.close();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
* 将网页的源代码打印出来
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
public class URLTest {
public static void main(String[] args) {
try {
URL url=new URL("http://www.sina.com.cn/");
InputStream is=url.openStream();
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br=new BufferedReader(isr);
String s=br.readLine();
while (s!=null) {
System.out.println(s);
s=br.readLine();
}
is.close();
br.close();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
基于UDP的多用户通信
public class MyUDP1 implements Runnable{
public static void main(String[] args) {
int num1 = 0;
int num2 = 0;
// Scanner scanner=new Scanner(System.in);
// System.out.println("请输入对方端口号");
// num1=scanner.nextInt();
// System.out.println("请输入本机端口号");
// num2=scanner.nextInt();
// System.out.println("以bye结束对话");
//
// Send s=new Send(num1,num2);
// Receive r=new Receive(num1,num2);
Send s=new Send(2,1);
Receive r=new Receive(2,1);
Thread ts=new Thread(s);
Thread tr=new Thread(r);
ts.start();
tr.start();
}
@Override
public void run() {
// TODO Auto-generated method stub
int num1 = 0;
int num2 = 0;
Scanner scanner=new Scanner(System.in);
System.out.println("请输入对方端口号");
num1=scanner.nextInt();
System.out.println("请输入本机端口号");
num2=scanner.nextInt();
System.out.println("以bye结束对话");
Send s=new Send(num1,num2);
Receive r=new Receive(num1,num2);
Thread ts=new Thread(s);
Thread tr=new Thread(r);
ts.start();
tr.start();
}
}
public class UDPTest {
public static void main(String[] args) {
MyUDP1 myUDP1=new MyUDP1();
Thread t1=new Thread(myUDP1);
Thread t2=new Thread(myUDP1);
t1.start();
try {
t1.sleep(10000);
System.out.println("请等待10秒。。。");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
t2.start();
}
}
mport java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Receive implements Runnable{
private int num1;
private int num2;
public Receive(int num1,int num2) {
this.num1=num1;
this.num2=num2;
}
@Override
public void run() {
// TODO Auto-generated method stub
try {
// Calendar rightnow=Calendar.getInstance();
// SimpleDateFormat format=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
// String time=format.format(rightnow.getTime());
//
DatagramSocket receiver=new DatagramSocket
(this.num2);
byte[] array=new byte[1024];
DatagramPacket packet=new DatagramPacket
(array, 1024, InetAddress.getLocalHost(), this.num1);
// receiver.receive(packet);
// byte[] data=packet.getData();
// System.out.println("对方说:"+time+"\n"+new String(data));
while (true) {
Calendar rightnow=Calendar.getInstance();
SimpleDateFormat format=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String time=format.format(rightnow.getTime());
// DatagramSocket receiver=new DatagramSocket
// (this.num2);
// byte[] array=new byte[1024];
// DatagramPacket packet=new DatagramPacket
// (array, 1024, InetAddress.getLocalHost(), this.num1);
receiver.receive(packet);
byte[] data=packet.getData();
String s=new String(data);
System.out.println(this.num1+":"+time+"\n"+s);
String end=new String("8888");
System.out.println(s+" "+end+" ");
if (s.equals(end)) {
System.out.println("1对方通话结束");
receiver.close();
System.out.println("2对方通话结束");
break;
}
}
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Scanner;
public class Send implements Runnable{
private int num1;
private int num2;
public Send(int num1,int num2) {
this.num1=num1;
this.num2=num2;
}
@Override
public void run() {
// TODO Auto-generated method stub
try {
// Calendar rightnow=Calendar.getInstance();
// SimpleDateFormat format=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
// String time=format.format(rightnow.getTime());
DatagramSocket send = new DatagramSocket();
Scanner scanner = new Scanner(System.in);
// System.out.println("你说:"+time);
// String s = scanner.nextLine();
// String s="201216310";
// byte[] array = s.getBytes();
// DatagramPacket packet = new DatagramPacket
// (array, array.length, InetAddress.getLocalHost(),
// this.num1);
// System.out.println("开始发送");
// send.send(packet);
while (true) {
Calendar rightnow=Calendar.getInstance();
SimpleDateFormat format=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String time=format.format(rightnow.getTime());
System.out.println(this.num2+"说:"+time);
String s = scanner.nextLine();
byte[] array = s.getBytes();
DatagramPacket packet = new DatagramPacket
(array, array.length, InetAddress.getLocalHost(),
this.num1);
System.out.println("开始发送");
send.send(packet);
if (s.equals("8888")) {
System.out.println("1通话结束");
send.close();
System.out.println("2通话结束");
break;
}
}
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}