socket ----简单的发送与接收

UDP:User Datapacket Protocol       用户数据报协议 ,非面向连接的,不可靠的[类似于发短信]。

思路:

将UDP工程分两个包: 发送方包(sender)和接收方包(receiver)

发送方包(sender)定义一个发送方类(Sender);接收方包(receiver)定义一个接收方类(Sender);

发送方(sender)类需要定义四个变量:

变量含义

变量类型

传入参数

举例

发送者地址

InetSocketAddress

发送者的ip地址和端口

InetSocketAddress senderAdd=new InetSocketAddress("127.0.0.1",9091);

接收者地址

InetSocketAddres

接收者的ip地址和端口

InetSocketAddress receiverAdd=new InetSocketAddress("127.0.0.1",9092);

UDP套接字[快递员]

DatagramSocket

传入发送者参数创建UDP套接字[快递员]

DatagramSocket socket=new DatagramSocket(senderAdd);

数据[包裹]

DatagramPacket

传入字节数组、数组长度和接收者参数

DatagramPacket packet=new DatagramPacket(buf,buf.length,receiverAdd);

然后执行UDP套接字[快递员]发送(send)的方法:socket.send(packet);

代码如下:

package sender;





import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetSocketAddress;

import java.net.SocketException;

/**

* UDP发送方

* @author liubo

*

*/

public class Sender {

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

//发送者

InetSocketAddress senderAdd=new InetSocketAddress("127.0.0.1",9091);

//接收者

InetSocketAddress receiverAdd=new InetSocketAddress("127.0.0.1",9092);

//UDP套接字[快递员]

DatagramSocket socket=new DatagramSocket(senderAdd);



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

//数据

String msg="湖南长沙牛耳教育龙哥威武+"+i+"!";

byte[] buf=msg.getBytes();

DatagramPacket packet=new DatagramPacket(buf,buf.length,receiverAdd);

//发送

socket.send(packet);

}

}



}

 

接收方(Sender)类需要定义三个变量

变量含义

变量类型

传入参数

举例

接收者地址

InetSocketAddres

接收者的ip地址和端口

InetSocketAddress receiverAdd=new InetSocketAddress("127.0.0.1",9092);

UDP套接字[快递员]

DatagramSocket

传入接收者变量创建UDP套接字[快递员]

DatagramSocket socket=new DatagramSocket(receiverAdd);

存放数据的包裹

DatagramPacket

传入字节数组、起始位置和数组长度

DatagramPacket packet=new DatagramPacket(buf,0,buf.length);

然后执行UDP套接字[快递员] 接收(receive)的方法:socket.receive(packet);

代码如下:

package receiver;



import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetSocketAddress;

import java.net.SocketException;



public class Receiver {

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

//接收方地址

InetSocketAddress receiverAdd=new InetSocketAddress("127.0.0.1",9092);

//UDP套接字

DatagramSocket socket=new DatagramSocket(receiverAdd);

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

//存放数据的包

byte[] buf=new byte[1024];

DatagramPacket packet=new DatagramPacket(buf,0,buf.length);

//接收数据

socket.receive(packet);

//从包中获得数据,会丢掉没有存放数据的位置

byte[] bs=packet.getData();

String s=new String(bs);

System.out.println(s);

}

}


}


运行时,先运行接收类,再运行发送类。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值