udp广播java代码,java的udp编程

java 中怎么使用UDP?

发送步骤:

创新互联公司基于成都重庆香港及美国等地区分布式IDC机房数据中心构建的电信大带宽,联通大带宽,移动大带宽,多线BGP大带宽租用,是为众多客户提供专业服务器托管报价,主机托管价格性价比高,为金融证券行业资阳托管服务器,ai人工智能服务器托管提供bgp线路100M独享,G口带宽及机柜租用的专业成都idc公司。

使用 DatagramSocket(int port) 建立socket(套间字)服务。

将数据打包到DatagramPacket中去

通过socket服务发送 (send()方法)

关闭资源

import java.io.IOException;  

import java.net.*;  

public class Send {  

public static void main(String[] args)  {  

DatagramSocket ds = null;  //建立套间字udpsocket服务  

try {  

ds = new DatagramSocket(8999);  //实例化套间字,指定自己的port  

} catch (SocketException e) {  

System.out.println("Cannot open port!");  

System.exit(1);   

}  

byte[] buf= "Hello, I am sender!".getBytes();  //数据  

InetAddress destination = null ;  

try {  

destination = InetAddress.getByName("192.168.1.5");  //需要发送的地址  

} catch (UnknownHostException e) {  

System.out.println("Cannot open findhost!");  

System.exit(1);   

}  

DatagramPacket dp =   

new DatagramPacket(buf, buf.length, destination , 10000);    

//打包到DatagramPacket类型中(DatagramSocket的send()方法接受此类,注意10000是接受地址的端口,不同于自己的端口!)  

try {  

ds.send(dp);  //发送数据  

} catch (IOException e) {  

}  

ds.close();  

}  

}

接收步骤:

使用 DatagramSocket(int port) 建立socket(套间字)服务。(我们注意到此服务即可以接收,又可以发送),port指定监视接受端口。

定义一个数据包(DatagramPacket),储存接收到的数据,使用其中的方法提取传送的内容

通过DatagramSocket 的receive方法将接受到的数据存入上面定义的包中

使用DatagramPacket的方法,提取数据。

关闭资源。

import java.net.*;  

public class Rec {  

public static void main(String[] args) throws Exception {  

DatagramSocket ds = new DatagramSocket(10000);  //定义服务,监视端口上面的发送端口,注意不是send本身端口  

byte[] buf = new byte[1024];//接受内容的大小,注意不要溢出  

DatagramPacket dp = new DatagramPacket(buf,0,buf.length);//定义一个接收的包  

ds.receive(dp);//将接受内容封装到包中  

String data = new String(dp.getData(), 0, dp.getLength());//利用getData()方法取出内容  

System.out.println(data);//打印内容  

ds.close();//关闭资源     

}  

}

Java如何使用UDP协议实现多人聊天?

UDP 是广播的,如果是做实时的聊天,就开两个线程、不需要服务器端。一个专门接收、一个做发送

java里怎么发广播呀

java里怎么发广播

public void onReceive(Context context,Intent intent){

Intent intent = new Intent(context,XxxService.class);

context.startService(intent);

}

Intent intent = new Intent();

intent.setAction("...");

Context.sendBroadcast(intent);

java编程 利用UDP方式,客户端向服务器发送三边值,服务器,根据三边值计算三角形面积返回客户端

创建两个类 分别添加main方法 一个作为server类一个作为client类

客户端先发送再接收  服务器端先接收再发送

下面给你一个server和client的例子 你在基础上改一下就行了

client发送的时候发送三边值  server接收后 写一个计算三角形面积的函数 把接收到的三边值传入函数计算出结果作为数据返回到client端

/**

*UDPServer

*/

import java.io.*;

import java.net.*;

class UDPServer{

public static void main(String[] args)throws IOException{

DatagramSocket  server = new DatagramSocket(5050);

byte[] recvBuf = new byte[100];

DatagramPacket recvPacket 

= new DatagramPacket(recvBuf , recvBuf.length);

server.receive(recvPacket);

String recvStr = new String(recvPacket.getData() , 0 , recvPacket.getLength());

System.out.println("Hello World!" + recvStr);

int port = recvPacket.getPort();

InetAddress addr = recvPacket.getAddress();

String sendStr = "Hello ! I'm Server";

byte[] sendBuf;

sendBuf = sendStr.getBytes();

DatagramPacket sendPacket 

= new DatagramPacket(sendBuf , sendBuf.length , addr , port );

server.send(sendPacket);

server.close();

}

}

/**

*UDPClient

*/

import java.io.*;

import java.net.*;

class UDPClient{

public static void main(String[] args)throws IOException{

DatagramSocket client = new DatagramSocket();

String sendStr = "Hello! I'm Client";

byte[] sendBuf;

sendBuf = sendStr.getBytes();

InetAddress addr = InetAddress.getByName("127.0.0.1");

int port = 5050;

DatagramPacket sendPacket 

= new DatagramPacket(sendBuf ,sendBuf.length , addr , port);

client.send(sendPacket);

byte[] recvBuf = new byte[100];

DatagramPacket recvPacket

= new DatagramPacket(recvBuf , recvBuf.length);

client.receive(recvPacket);

String recvStr = new String(recvPacket.getData() , 0 ,recvPacket.getLength());

System.out.println("收到:" + recvStr);

client.close();

}

}

java 实现 UDP连接的源程序

import java.io.*;

import java.lang.*;

import java.net.*;

public class uclient

{

private DatagramSocket cli;

private DatagramPacket pac;

private byte sb[];

private String sen;

public uclient()

{

Init();

}

public void Init()

{

try

{

//指定端口号,避免与其他应用程序发生冲突

cli=new DatagramSocket(10002);

sb=new byte[1024];

sen="UDP方式发送数据";

sb=sen.getBytes();

pac=new DatagramPacket(sb,sb.length,InetAddress.getByName("localhost"),10005);

cli.send(pac);

}

catch(SocketException se)

{

se.printStackTrace();

}

catch(IOException ie)

{

ie.printStackTrace();

}

}

public static void main(String args[])

{

new uclient();

}

}

接收端数据:

//加以改进代码,可以改变接收方式

import java.io.*;

import java.lang.*;

import java.net.*;

public class userve

{

private DatagramSocket ser;

private DatagramPacket pac;

private byte rb[];

private String rev;

public userve()

{

Init();

}

public void Init()

{

try

{

ser=new DatagramSocket(10005);

rb=new byte[1024];

pac=new DatagramPacket(rb,rb.length);

rev="";

int i=0;

while(i==0)//无数据,则循环

{

ser.receive(pac);

i=pac.getLength();

//接收数据

if(i0)

{

//指定接收到数据的长度,可使接收数据正常显示,开始时很容易忽略这一点

rev=new String(rb,0,pac.getLength());

System.out.println(rev);

i=0;//循环接收

}

}

}

catch(Exception e)

{

e.printStackTrace();

}

}

public static void main(String args[])

{

new userve();

}

}


当前标题:udp广播java代码,java的udp编程
本文URL:http://pwwzsj.com/article/hcdsdc.html