udp 通信java例_UDP通信的一个小例子!

package com.bacoo.www;

import java.io.IOException;

import java.net.*;

public class UDPServer implements Runnable{

/**

* @param args

*/

public UDPServer(){

new Thread(this).start();

try{

DatagramSocket dgs=new DatagramSocket(8765);

byte [] buf=new byte[1024];

DatagramPacket dgp=new DatagramPacket(buf,buf.length);

for(int i=0;i<3;i++){

dgs.receive(dgp);

System.out.println("The server has received the datagram!");

dgs.send(dgp);

}

}catch(IOException ioe){

ioe.printStackTrace();

}

}

public static void main(String[] args) {

// TODO Auto-generated method stub

new UDPServer();

}

public void run() {

// TODO Auto-generated method stub

new UDPClient();

}

}

/*

说明:

这里要对UDP方式作一个简要的说明,构成UDP通信机制的主要是两个类,即DatagramSocket和DatagramPacket,

主要包括发送和接收两个方面的内容,对于发送方来说,需要:

(1)建立一个DatagramSocket对象,注意建立的时候不需要指定端口,因为发送方关注的是发送成功,而不在乎是从本机的哪个端口发送出去的,

而发送的具体事宜则是由DatagramPacket来完成的,包括对目的地址的指定。

(2)建立一个DatagramPacket对象,注意要制定目的地址和对应的端口A。

(3)调用DatagramSocket对象的send函数发送,send函数的参数就是刚建立的DatagramPacket对象。

对于接收方来讲,需要:

(1)建立一个DatagramSocket对象,注意要指定端口,因为作为接收方,不在乎接收的东西是从哪里来的,而只是在本机的一个指定端口进行

接收就ok了,但需要注意这里的端口要与发送方投递的端口A一致。

(2)建立一个DatagramPacket对象,注意不必指定地址和端口,因为这是被动的接收,而在接收过程中,该DatagramPacket对象

扮演的角色仅仅是一个信息的承载者,也就是把从端口来的信息封存到它里面。

(3)调用DatagramSocket对象的receive函数接收,receive函数的参数就是刚建立的DatagramPacket对象。

最后,还有一点需要说明,就是在刚刚指出的接受模式来说,比如说本例中,虽然未给DatagramPacket对象指定地址和端口,但是

依然可以调用send函数进行发送,这是为什么呢?因为它先调用了receive函数,通过调用该函数,可以在接收过程中保存了信息的来源,

也就是地址和端口,因此下次再用send发送时,就仍然往这个地址和端口发送数据,因此可以发送成功。

*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值