您的位置:首页 > 理论基础 > 计算机网络

Java基础知识强化之网络编程笔记04:UDP之发送端的数据来自于键盘录入案例

2015-10-07 21:22 1016 查看
1. 数据来自于键盘录入

键盘录入数据要自己控制录入结束。

2. 代码实现:

(1)发送端:

 package com.himi.updDemo1;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

/**
*
* UDP协议发送数据:
* 1. 创建发送端的Socket对象
* 2. 创建数据,并把数据打包
* 3. 调用Socket对象的发送方法,发送数据包
* 4. 释放资源
*
*/
public class UdpSendDemo {
public static void main(String[] args) throws IOException {
//创建发送端的Socket对象,这里使用的UDP使用的客户端的Socket对象类是DatagramSocket.
//DatagramSocket:DatagramSocket()
DatagramSocket ds = new DatagramSocket();

//创建数据,并把数据打包
//DatagramPacket:此类表示数据报包
/**DatagramPacket(byte[] buf, int length, InetAddress address, int port)
**         构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
*/

while(true) {
Scanner  sc = new Scanner(System.in);
String data = sc.nextLine();
if(data.equals("886")){
break;
}

byte[] bytes = data.getBytes();
//IP地址对象
InetAddress address = InetAddress.getByName("49.123.72.145");
//端口号
int port = 10086;
//数据打包
DatagramPacket dp = new DatagramPacket(bytes, bytes.length, address, port);

//调用Socket对象的发送方法,发送数据包
//public void send(DatagramPacket p)
ds.send(dp);

}
//释放资源
ds.close();

}

}


(2)接收端:

 package com.himi.updDemo1;

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

/**
*
* UDP协议接收数据:
* 1. 创建接收端的Socket对象
* 2. 创建数据包,接收数据(接收容器)
* 3. 调用Socket对象的接收方法,接收数据包
* 4. 解析数据包,并显示在控制台
* 5. 释放资源
*
*/

public class UdpReceiveDemo {

public static void main(String[] args) throws IOException {
// 创建接收端的Socket对象
//DatagramSocket(int port):创建数据报套接字并将其绑定到本地主机上的指定端口
DatagramSocket ds = new DatagramSocket(10086);

while (true) {
// 创建数据包,接收数据(接收容器)
// DatagramPacket(byte[] buf, int length)
byte[] bytes = new byte[1024];
int length = bytes.length;

DatagramPacket dp = new DatagramPacket(bytes, length);

// 调用Socket对象的接收方法,接收数据包
// public void receive(DatagramPacket p)
ds.receive(dp);// 阻塞式方法

// 解析数据包,并显示在控制台
// 获取对方的IP
// public InetAddress getAddress()
InetAddress address = dp.getAddress();
String IP = address.getHostAddress();

// public byte[] getData():获取数据的缓冲区
// public int getLength():获取数据的实际长度
byte[] bys = dp.getData();
int len = dp.getLength();
String s = new String(bys, 0, len);

System.out.println("发送端" + IP + "的数据:" + s);
}

//释放资源
//ds.close();

}

}


运行效果如下:





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: