網絡編程demo之Udp和URL
首先是udp編程客戶端發送消息給服務端,服務端接受然後打印到console控制臺上
下面是一個有代表性的demo
package com.henu.liulei;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import org.junit.Test;
public class TestUdp {
@Test
public void send()
{
try {
DatagramSocket ds=new DatagramSocket();//創建一個datagramsocket對象
byte[]b;
b="你好,我是要發送的數據".getBytes();
//創建一個數據報,每個數據報不能大於64k,都記錄著數據信息,發送端的IP,端口號,以及要發送的接收端的ip,端口號
DatagramPacket pack=new DatagramPacket(b,0,b.length,InetAddress.getByName("127.0.0.1"),9090);
ds.send(pack);//socket對象把數據發送出去
ds.close();
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Test
public void receive()
{
try {
DatagramSocket ds=new DatagramSocket(9090);//也是先創建一個socket對象,只需要指明端口號就
//以
byte []b=new byte[1024];
DatagramPacket pack=new DatagramPacket(b,0,b.length);//聲明數據報
ds.receive(pack);//接受數據報
String str =new String(pack.getData(),0,pack.getLength());//把數據報裏面的內容轉為字符串打印出來
System.out.println(str);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
下面是url編程的demo
package com.henu.liulei;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
//Url:統一資源定位符,一個URL對象對應互聯網上一個資源
//我們可以通過URL的對象調用其相應的方法,將此資源讀取下載
public class TestUrl {
public static void main(String[] args) throws Exception {
//創建一個url的對象
URL url=new URL("http://www.baidu.com/index.html");//相當於File file=new File("文件的路徑")
//
System.out.println(url.getHost());//主機
System.out.println(url.getProtocol());//協議
System.out.println(url.getPort());//端口號
System.out.println(url.getFile());//文件名
System.out.println(url.getRef());//獲取url在文件裏的相對位置
System.out.println(url.getQuery());//獲取該url的查詢名
//將服務端的資源讀進來
InputStream is=url.openStream();
byte []b=new byte[20];
int len;
while((len = is.read(b))!= -1) {
String str=new String(b,0,len);
System.out.println(str);
}
is.close();
//如果既有數據的輸入,又有數據的輸出則考慮URLConnection
URLConnection urlCon=url.openConnection();
InputStream is1=urlCon.getInputStream();
FileOutputStream fos=new FileOutputStream(new File("abc.txt"));
byte []b1=new byte[10];
int len1;
while((len1=is1.read(b1))!=-1) {
fos.write(b1,0,len1);
}
fos.close();
is1.close();
}
}
網絡編程demo之Udp和URL