java使用UDP来进行客户端和服务器端通信的简单例子

本文详细介绍了使用Java实现UDP协议进行客户端与服务器之间的数据通信过程,包括如何创建套接字、发送与接收数据,以及处理未知主机异常和IO异常的情况。
1:客户端程序
view plain

package com.pb.udp;

import java.io.ioexception;
import java.net.datagrampacket;
import java.net.inetaddress;
import java.net.unknownhostexception;
import java.net.datagramsocket;

/**
* 使用sender类来代表客户端程序,
* @author ccna_zhang
*
*/
public class sender {

public static void main(string[] args) {
string msg = "hello, world";
byte[] buf = msg.getbytes();
try {
inetaddress address = inetaddress.getbyname("192.168.1.80"); //服务器地址
int port = 8080; //服务器的端口号
//创建发送方的数据报信息
datagrampacket datagrampacket = new datagrampacket(buf, buf.length, address, port);

datagramsocket socket = new datagramsocket(); //创建套接字
socket.send(datagrampacket); //通过套接字发送数据

//接收服务器反馈数据
byte[] backbuf = new byte[1024];
datagrampacket backpacket = new datagrampacket(backbuf, backbuf.length);
socket.receive(backpacket); //接收返回数据
string backmsg = new string(backbuf, 0, backpacket.getlength());
system.out.println("服务器返回的数据为:" + backmsg);

socket.close();

} catch (unknownhostexception e) {
e.printstacktrace();
} catch (ioexception e) {
e.printstacktrace();
}
}
}


2:服务器端程序
view plain

package com.pb.udp;

import java.io.ioexception;
import java.net.datagrampacket;
import java.net.datagramsocket;
import java.net.inetaddress;
import java.net.socketaddress;
import java.net.unknownhostexception;

/**
* 服务器端程序
* @author ccna_zhang
*
*/
public class receiver {

public static void main(string[] args) {

try {
inetaddress address = inetaddress.getlocalhost();
int port = 8080;

//创建datagramsocket对象
datagramsocket socket = new datagramsocket(port, address);

byte[] buf = new byte[1024]; //定义byte数组
datagrampacket packet = new datagrampacket(buf, buf.length); //创建datagrampacket对象

socket.receive(packet); //通过套接字接收数据

string getmsg = new string(buf, 0, packet.getlength());
system.out.println("客户端发送的数据为:" + getmsg);

//从服务器返回给客户端数据
inetaddress clientaddress = packet.getaddress(); //获得客户端的ip地址
int clientport = packet.getport(); //获得客户端的端口号
socketaddress sendaddress = packet.getsocketaddress();
string feedback = "received";
byte[] backbuf = feedback.getbytes();
datagrampacket sendpacket = new datagrampacket(backbuf, backbuf.length, sendaddress); //封装返回给客户端的数据
socket.send(sendpacket); //通过套接字反馈服务器数据

socket.close(); //关闭套接字

} catch (unknownhostexception e) {
e.printstacktrace();
} catch(ioexception e) {
e.printstacktrace();
}
}
}


3:程序运行结果

服务器端:

客户端发送的数据为:hello, world

客户端:

服务器返回的数据为:received
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值