基於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();
}
}
}