赵雅智_java网络编程(1) (三)

2014-11-24 09:19:33 · 作者: · 浏览: 2
a]
package net.csdn.web;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class DemoReceive {
public static void main(String[] args) throws IOException {
//1.建立udp的socket服务。要监听一个端口。
DatagramSocket ds = new DatagramSocket(9009);
//2.定义一个缓冲区,将该缓冲区封装到packet包中。
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);

//3.通过socket的receive方法将数据存入数据包中。
ds.receive(dp);
//4.通过数据包dp的方法getData()、getAddress()、getPort()等方法获取包中的指定信息。
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(),0,dp.getLength());
int port = dp.getPort();
System.out.println(ip+":"+data+":"+port);
//5.关闭socket。
ds.close();
}

}

package net.csdn.web;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class DemoReceive {
public static void main(String[] args) throws IOException {
//1.建立udp的socket服务。要监听一个端口。
DatagramSocket ds = new DatagramSocket(9009);
//2.定义一个缓冲区,将该缓冲区封装到packet包中。
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);

//3.通过socket的receive方法将数据存入数据包中。
ds.receive(dp);
//4.通过数据包dp的方法getData()、getAddress()、getPort()等方法获取包中的指定信息。
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(),0,dp.getLength());
int port = dp.getPort();
System.out.println(ip+":"+data+":"+port);
//5.关闭socket。
ds.close();
}

}

用cmd命令窗口打开:

\

实例2,编写程序演示使用UDP协议数据报的发送和接受,可从键盘录入

发送端

[java]
package net.csdn.web;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class DemoSend2 {

/**
* @param args
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
DatagramSocket ds = new DatagramSocket();

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = null;
while((line = br.readLine()) != null){
if(line.equals(888)){
break;
}
byte[] buf = line.getBytes();
DatagramPacket dp = new DatagramPacket(buf, buf.length,InetAddress.getByName("192.168.49.255"),9009);
ds.send(dp);
}
ds.close();
}
}

package net.csdn.web;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class DemoSend2 {

/**
* @param args
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
DatagramSocket ds = new DatagramSocket();

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = null;
while((line = br.readLine()) != null){
if(line.equals(888)){
break;
}
byte[] buf = line.getBytes();
DatagramPacket dp = new DatagramPacket(buf, buf.length,InetAddress.getByName("192.168.49.255"),9009);
d