本帖最后由 三分之一 于 2015-8-30 15:10 编辑
大神们帮忙看看,程序在运行后没有问题,在Dos命令行下,开启两个窗口,一个是发送端,一个是接收端,接收端一直开启,发送端发送数据,为什么接收端没有任何反应?是我机器的原因吗?
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- import java.net.InetAddress;
- import java.net.SocketException;
- /**需求:UDP---键盘录入数据方式来进行数据传输(发送端)
- * @param args
- */
- class UdpSend{
- public static void main(String[] args) throws SocketException,IOException {
- //创建UDP的socket服务
- DatagramSocket ds=new DatagramSocket();
- //键盘输入数据
- BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
- //读取输入的数据
- String line=null;
- while((line=bufr.readLine())!=null)
- {
- if("886".equals(line))
- break;
- //把数据封装进数据包
- byte[] buf=line.getBytes();
- DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("172.18.245.7"),10005);
- //发送数据
- ds.send(dp);
- //关闭资源
- ds.close();
- }
-
- }
- }
- class UdpReceive{
- public static void main(String[] args) throws SocketException,IOException {
- //创建socket服务,建立端点连接
- DatagramSocket ds=new DatagramSocket(10005);
- while(true)
- {
- //定义数据包,存储数据
- byte[] buf=new byte[1024];
- DatagramPacket dp=new DatagramPacket(buf,buf.length);
- //接收数据
- ds.receive(dp);
- //获取数据包中的数据
- String ip=dp.getAddress().getHostAddress();
- String data=new String(dp.getData(),0,dp.getLength());
- System.out.println(ip+"...."+data);
- //关闭资源
- //ds.close();
- }
- }
- }
复制代码
|
|