黑马程序员技术交流社区
标题:
关于网络编程问题
[打印本页]
作者:
黑马-王鹏
时间:
2013-4-23 10:43
标题:
关于网络编程问题
本帖最后由 黑马-王鹏 于 2013-4-23 12:17 编辑
import java.net.*;
//需求:使用UDP传输方式,将一段文字数据发送出去
class UdpSend
{
public static void main(String[] args)throws Exception
{
//1.创建UDP服务
DatagramSocket ds = new DatagramSocket();
//2.创建数据,并将数据封装成包
byte [] buf = "hellow java".getBytes();
DatagramPacket dp =
new DatagramPacket(buf,buf.length,InetAddress.getByName("10.11.116.14"),10000);
//3.通过Socket服务将已有的数据发送出去
ds.send(dp);
//4.关闭资源
ds.close();
}
}
//需求:定义一个应用程序,用于接收udp协议传输的数据并处理
class UdpReceive
{
public static void main(String[] args)throws Exception
{
//1.创建UDP服务,建立端点
DatagramSocket ds = new DatagramSocket(10000);
//2.定义数据包用于存储数据
Byte[] buf = new Byte[1024];
// DatagramPacket dp = new DatagramPacket(buf,buf.length);
DatagramPacket dp = new DatagramPacket(buf,buf.length);//为什么这里编译不通过啊?
//3.通过UDP服务的receive方法将接收到的数据存入已定义好的包中
ds.receive(dp);
//4.通过数据包中的方法访问数据
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.关闭资源
ds.close();
}
}
复制代码
[3LO{9[[T(GZ8ZJK)C2[IOC.jpg
(33.93 KB, 下载次数: 9)
下载附件
2013-4-23 10:39 上传
作者:
陈湘林
时间:
2013-4-23 11:36
UDP通信和TCP类似,但是UDP服务端发完信息后,不管客户端有没有接收信息
java.net 类 DatagramPacket
构造方法摘要
DatagramPacket(byte[] buf, int length) 构造 DatagramPacket,用来接收长度为 length 的数据包。
DatagramPacket(byte[] buf, int length, InetAddress address, int port)构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
方法
byte[] getData()返回数据缓冲区。
int getLength()返回将要发送或接收到的数据的长度。
java.net 类 DatagramSocket
构造方法摘要
DatagramSocket(int port)创建数据报套接字并将其绑定到本地主机上的指定端口。
方法
void receive(DatagramPacket p) 从此套接字接收数据报包。
void send(DatagramPacket p) 从此套接字发送数据报包。
案例,用UDP模式进行通讯
先写客户端
import java.net.*;
public class UDPClient {
public static void main(String[] args) throws Exception{
DatagramSocket ds=null;//声明客户端对象
byte[] buf=new byte[1024];//开辟空间,接收数据
DatagramPacket dp=null;//声明服务端对象
ds=new DatagramSocket(8888);//客户端直接接收8888端口的数据
dp=new DatagramPacket(buf, 1024);//数据保存在dp中
ds.receive(dp);//接收数据
String str=new String(dp.getData(),0,buf.length);
System.out.println(dp.getAddress().getHostAddress()+":"+dp.getPort()+"说:"+str);
}
}
再写服务端
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UDPServer {
public static void main(String[] args) throws Exception{
DatagramSocket ds=null;
DatagramPacket dp=null;
ds=new DatagramSocket(9000);
String str="xx";//发送的数据
dp=new DatagramPacket(str.getBytes(), str.length(),InetAddress.getByName("localhost"),8888);
System.out.println("发送信息");
ds.send(dp);
ds.close();
System.out.println("信息发送完毕");
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2