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
java使用UDP来进行客户端和服务器端通信的简单例子
猜你喜欢
转载自itoracja.iteye.com/blog/1207267
今日推荐
周排行