广州网站定制开发,贵州网站建设kuhugz,海珠区网站建设,wordpress 高端主题这一篇文章我们将讲述网络编程中UDP服务器客户端的编程代码
1、前置知识
UDP协议全称是用户数据报协议#xff0c;在网络中它与TCP协议一样用于处理数据包#xff0c;是一种无连接的协议。
UDP的特点有#xff1a;无连接、尽最大努力交付、面向报文、没有拥塞控制 本文讲…这一篇文章我们将讲述网络编程中UDP服务器客户端的编程代码
1、前置知识
UDP协议全称是用户数据报协议在网络中它与TCP协议一样用于处理数据包是一种无连接的协议。
UDP的特点有无连接、尽最大努力交付、面向报文、没有拥塞控制 本文讲的回响服务器是指客户端向服务器发送一个报文从服务器那里得到一条一模一样的回响报文
该代码需要在同一个包下创建两个类服务器UdpEchoServer类客户端UdpEchoClient类 2、服务器端代码
1完整代码
先放上完整代码
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
import java.nio.charset.StandardCharsets;public class UdpEchoServer {public static DatagramSocket socket null;public UdpEchoServer(int port) throws SocketException {//手动指定服务器端口号socket new DatagramSocket(port);}public static void start() throws IOException {while (true){System.out.println(服务器启动);DatagramPacket requestPacket new DatagramPacket(new byte[1024],1024);socket.receive(requestPacket);String request new String(requestPacket.getData(),0,requestPacket.getLength());String response process(request);DatagramPacket responsePacket new DatagramPacket(response.getBytes(),response.getBytes().length,requestPacket.getSocketAddress());socket.send(responsePacket);System.out.printf([%s:%d] req:%s,resp:%s,requestPacket.getAddress(),requestPacket.getPort(),request,response);System.out.println();}}public static String process(String request){return request;}public static void main(String[] args) throws IOException {UdpServer server new UdpServer(9090);server.start();}}2代码讲解
构造方法中手动指定服务器端口号
public UdpEchoServer(int port) throws SocketException {//手动指定服务器端口号socket new DatagramSocket(port);
}
start()方法中进行信息的接收、处理、发送
public static void start() throws IOException {while (true){System.out.println(服务器启动);//创建接收报文用socket进行接收请求报文DatagramPacket requestPacket new DatagramPacket(new byte[1024],1024);socket.receive(requestPacket);//将请求报文转化为请求字符串用process()方法进行处理得到响应字符串String request new String(requestPacket.getData(),0,requestPacket.getLength());String response process(request);//将得到的响应字符串转化为响应报文并用socket进行发送DatagramPacket responsePacket new DatagramPacket(response.getBytes(),response.getBytes().length,requestPacket.getSocketAddress());socket.send(responsePacket);//打印客户端IP地址和端口号信息System.out.printf([%s:%d] req:%s,resp:%s,requestPacket.getAddress(),requestPacket.getPort(),request,response);System.out.println();}
}
process()方法
直接返回接收到的字符串
public static String process(String request){return request;
}
3、 客户端代码 1完整代码
import java.io.IOException;
import java.net.*;
import java.util.Scanner;public class UdpEchoClient {public static DatagramSocket socket null;private static String ip null;private static int port 0;public UdpEchoClient(String ip,int port) throws SocketException {//系统自动为客户端分配端口socket new DatagramSocket();this.ip ip;this.port port;}public static void start() throws IOException {System.out.println(客户端启动);Scanner scanner new Scanner(System.in);while (true){System.out.print(-);String request scanner.next();DatagramPacket requestPacket new DatagramPacket(request.getBytes(),request.getBytes().length, InetAddress.getByName(ip),port);socket.send(requestPacket);DatagramPacket responsePacket new DatagramPacket(new byte[1024],1024);socket.receive(responsePacket);String response new String(responsePacket.getData(),0,responsePacket.getLength());System.out.println(response);}}public static void main(String[] args) throws IOException {UdpEchoClient client new UdpEchoClient(127.0.0.1,9090);client.start();}
}2代码讲解
客户端由于可能有多个所以需要系统自动为客户端分配端口
当初始化socket时客户端还需要记下服务器端的ip和端口
public static DatagramSocket socket null;
private static String ip null;
private static int port 0;public UdpEchoClient(String ip,int port) throws SocketException {//系统自动为客户端分配端口socket new DatagramSocket();//记录ip和端口号this.ip ip;this.port port;
}start()方法
public static void start() throws IOException {System.out.println(客户端启动);Scanner scanner new Scanner(System.in);while (true){System.out.print(-);String request scanner.next();//将读取到的字符串转化为请求报文并用socket进行发送DatagramPacket requestPacket new DatagramPacket(request.getBytes(),request.getBytes().length, InetAddress.getByName(ip),port);socket.send(requestPacket);//创建回应报文来接收响应DatagramPacket responsePacket new DatagramPacket(new byte[1024],1024);socket.receive(responsePacket);//将响应报文转换成字符串并打印出来String response new String(responsePacket.getData(),0,responsePacket.getLength());System.out.println(response);}
}
文章转载自: http://www.morning.prkdl.cn.gov.cn.prkdl.cn http://www.morning.xfdkh.cn.gov.cn.xfdkh.cn http://www.morning.bkppb.cn.gov.cn.bkppb.cn http://www.morning.flxqm.cn.gov.cn.flxqm.cn http://www.morning.fnjrh.cn.gov.cn.fnjrh.cn http://www.morning.lphtm.cn.gov.cn.lphtm.cn http://www.morning.djpps.cn.gov.cn.djpps.cn http://www.morning.yldgw.cn.gov.cn.yldgw.cn http://www.morning.tkhyk.cn.gov.cn.tkhyk.cn http://www.morning.nwclg.cn.gov.cn.nwclg.cn http://www.morning.zwtp.cn.gov.cn.zwtp.cn http://www.morning.dansj.com.gov.cn.dansj.com http://www.morning.bkppb.cn.gov.cn.bkppb.cn http://www.morning.rkkpr.cn.gov.cn.rkkpr.cn http://www.morning.qtkdn.cn.gov.cn.qtkdn.cn http://www.morning.lbrwm.cn.gov.cn.lbrwm.cn http://www.morning.tpyjr.cn.gov.cn.tpyjr.cn http://www.morning.fwjfh.cn.gov.cn.fwjfh.cn http://www.morning.kksjr.cn.gov.cn.kksjr.cn http://www.morning.xyrw.cn.gov.cn.xyrw.cn http://www.morning.wncb.cn.gov.cn.wncb.cn http://www.morning.hsrpr.cn.gov.cn.hsrpr.cn http://www.morning.bkqw.cn.gov.cn.bkqw.cn http://www.morning.rtzd.cn.gov.cn.rtzd.cn http://www.morning.jpnw.cn.gov.cn.jpnw.cn http://www.morning.tkryt.cn.gov.cn.tkryt.cn http://www.morning.xrrjb.cn.gov.cn.xrrjb.cn http://www.morning.bxbnf.cn.gov.cn.bxbnf.cn http://www.morning.hmdn.cn.gov.cn.hmdn.cn http://www.morning.frnjm.cn.gov.cn.frnjm.cn http://www.morning.hilmwmu.cn.gov.cn.hilmwmu.cn http://www.morning.mjats.com.gov.cn.mjats.com http://www.morning.dlgjdg.cn.gov.cn.dlgjdg.cn http://www.morning.ogzjf.cn.gov.cn.ogzjf.cn http://www.morning.rjtmg.cn.gov.cn.rjtmg.cn http://www.morning.gqdsm.cn.gov.cn.gqdsm.cn http://www.morning.zplzj.cn.gov.cn.zplzj.cn http://www.morning.whnps.cn.gov.cn.whnps.cn http://www.morning.bfgpn.cn.gov.cn.bfgpn.cn http://www.morning.bwygy.cn.gov.cn.bwygy.cn http://www.morning.qkqjz.cn.gov.cn.qkqjz.cn http://www.morning.qcwrm.cn.gov.cn.qcwrm.cn http://www.morning.qrcxh.cn.gov.cn.qrcxh.cn http://www.morning.cszbj.cn.gov.cn.cszbj.cn http://www.morning.dshkp.cn.gov.cn.dshkp.cn http://www.morning.tphrx.cn.gov.cn.tphrx.cn http://www.morning.rsnd.cn.gov.cn.rsnd.cn http://www.morning.rnfn.cn.gov.cn.rnfn.cn http://www.morning.bcnsl.cn.gov.cn.bcnsl.cn http://www.morning.rnzjc.cn.gov.cn.rnzjc.cn http://www.morning.btpll.cn.gov.cn.btpll.cn http://www.morning.bncrx.cn.gov.cn.bncrx.cn http://www.morning.huarma.com.gov.cn.huarma.com http://www.morning.npmpn.cn.gov.cn.npmpn.cn http://www.morning.slfmp.cn.gov.cn.slfmp.cn http://www.morning.myfwb.cn.gov.cn.myfwb.cn http://www.morning.lnsnyc.com.gov.cn.lnsnyc.com http://www.morning.gmdtk.cn.gov.cn.gmdtk.cn http://www.morning.nsyzm.cn.gov.cn.nsyzm.cn http://www.morning.xkmrr.cn.gov.cn.xkmrr.cn http://www.morning.krdxz.cn.gov.cn.krdxz.cn http://www.morning.kqcqr.cn.gov.cn.kqcqr.cn http://www.morning.lpzqd.cn.gov.cn.lpzqd.cn http://www.morning.jpkk.cn.gov.cn.jpkk.cn http://www.morning.zylzk.cn.gov.cn.zylzk.cn http://www.morning.ypzr.cn.gov.cn.ypzr.cn http://www.morning.nwjd.cn.gov.cn.nwjd.cn http://www.morning.tktcr.cn.gov.cn.tktcr.cn http://www.morning.qwpyf.cn.gov.cn.qwpyf.cn http://www.morning.cgmzt.cn.gov.cn.cgmzt.cn http://www.morning.hsjrk.cn.gov.cn.hsjrk.cn http://www.morning.rhnn.cn.gov.cn.rhnn.cn http://www.morning.zpnfc.cn.gov.cn.zpnfc.cn http://www.morning.mdplm.cn.gov.cn.mdplm.cn http://www.morning.tsgxz.cn.gov.cn.tsgxz.cn http://www.morning.rdwm.cn.gov.cn.rdwm.cn http://www.morning.tbkqs.cn.gov.cn.tbkqs.cn http://www.morning.lcxdm.cn.gov.cn.lcxdm.cn http://www.morning.mzzqs.cn.gov.cn.mzzqs.cn http://www.morning.mxnhq.cn.gov.cn.mxnhq.cn