UDP协议的网络编程
2017-08-12 14:34
316 查看
java网络编程之UDP实例
package Socket; import java.net.DatagramPacket; import java.net.InetAddress; public class Dgram { public static DatagramPacket toDatagram(String s, InetAddress destIA, int destPort) { byte[] buf = new byte[s.length() + 1]; s.getBytes(0, s.length(), buf, 0); return new DatagramPacket(buf, buf.length, destIA, destPort); } public static St 4000 ring toString(DatagramPacket p) { return new String(p.getData(), 0, p.getLength()); } }
package Socket; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; public class ChatterServer { static final int INPORT = 1712; private byte[] buf = new byte[1000]; private DatagramPacket dp = new DatagramPacket(buf, buf.length); private DatagramSocket socket; public ChatterServer() { try { socket = new DatagramSocket(INPORT);// 创建一接收消息的对象,而不是每次接收消息都创建一个 System.out.println("Server started"); while (true) { socket.receive(dp); //接收到客户端的消息 String rcvd = Dgram.toString(dp) + ",from address:" + dp.getAddress() + ",port:" + dp.getPort(); System.out.println("From Client:"+rcvd); String echoString = "From Server Echoed:" + rcvd; DatagramPacket echo = Dgram.toDatagram(echoString, dp.getAddress(), dp.getPort()); //将数据包发送给客户端 socket.send(echo); } } catch (SocketException e) { System.err.println("Can't open socket"); System.exit(1); } catch (IOException e) { System.err.println("Communication error"); e.printStackTrace(); } } public static void main(String[] args) { new ChatterServer(); } }
package Socket; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; public class ChatterClient extends Thread { private DatagramSocket s; private InetAddress hostAddress; private byte[] buf = new byte[1000]; private DatagramPacket dp = new DatagramPacket(buf, buf.length); private int id; public ChatterClient(int identifier) { id = identifier; try { s = new DatagramSocket(); hostAddress = InetAddress.getByName("localhost"); } catch (UnknownHostException e) { System.err.println("Cannot find host"); System.exit(1); } catch (SocketException e) { System.err.println("Can't open socket"); e.printStackTrace(); System.exit(1); } System.out.println("ChatterClient starting"); } public void run() { try { for (int i = 0; i < 25; i++) { String outMessage = "Client #" + id + ",message #" + i; s.send(Dgram.toDatagram(outMessage, hostAddress, ChatterServer.INPORT)); s.receive(dp); String rcvd = "Client #" + id + ",rcvd from " + dp.getAddress() + ", " + dp.getPort() + ":" + Dgram.toString(dp); System.out.println(rcvd); } } catch (IOException e) { e.printStackTrace(); System.exit(1); } } public static void main(String[] args) { for (int i = 0; i < 10; i++) { new ChatterClient(i).start(); } } }
相关文章推荐
- Java网络编程_基于UDP协议的网络编程
- 网络编程基础(1)-协议概要-IP、ICMP、UDP
- 【转载】 基于UDP、TCP协议的C#网络编程
- Linux 网络编程五(UDP协议)
- Java学习笔记52(网络编程:UDP协议案例)
- 基于UDP协议的网络编程:
- 黑马程序员_Java基础_网络编程_UDP传输协议编程,控制台聊天程序
- 网络编程—UDP协议传输接受与发送数据
- linux网络编程之socket(十四):基于UDP协议的网络程序
- java 中基于udp协议的网络编程的 net库包的相关类的用法
- 基于UDP、TCP协议的C#网络编程之一
- 【转载】 基于UDP、TCP协议的C#网络编程
- Android Socket网络编程 UDP协议
- java 网络编程三要素之协议(UDP协议):
- 网络编程之基于UDP协议的网络编程
- 基于UDP协议的网络编程(使用DatagramSocket发送接收数据)
- linux网络编程之socket(十四):基于UDP协议的网络程序
- Linux网络编程之UDP协议(完整版)
- 基于UDP、TCP协议的C#网络编程之一
- 网络编程_UDP协议发送和接收数据图解