用Socket实现TCP,UDP通信
2015-02-16 16:37
351 查看
用Socket实现TCP,UDP通信
用Socket实现UDP通信
UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。public class UDPServer { public static void main(String[] args) { try { DatagramSocket ds = new DatagramSocket(); byte[] buffer = "udp test".getBytes(); DatagramPacket dp = new DatagramPacket(buffer, buffer.length, InetAddress.getByName("localhost"), 8000); // 将localhost换为255.255.255.255可以发送广播,对该局域网内所有机器发送消息 ds.send(dp); ds.close(); } catch (SocketException e) { e.printStackTrace(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } public class UDPClient { public static void main(String[] args) { try { DatagramSocket ds = new DatagramSocket(8000); byte[] buffer = new byte[1024]; DatagramPacket dp = new DatagramPacket(buffer, buffer.length); ds.receive(dp); String ip = dp.getAddress().getHostAddress(); String data = new String(dp.getData(), 0, dp.getLength()); int port = dp.getPort(); System.out.println("ip: " + ip + "; data: " + data + "; port: " + port); ds.close(); } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
用Socket实现TCP通信
TCP因为要经过三次“对话”,传输可靠,适用于传输大文件,速度比UDP慢。public class TCPServer { public static void main(String[] args) { try { ServerSocket server = new ServerSocket(8001); boolean flag = true; while (flag) { final Socket client = server.accept(); System.out.println("Connect to client " + client + " remote add: " + client.getRemoteSocketAddress()); new Thread(new Runnable() { @Override public void run() { try { PrintStream ps = new PrintStream(client.getOutputStream()); BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream())); while (true) { String line = br.readLine(); System.out.println("client: " + line); ps.println(line + " copied"); if ("bye".equals(line)) { break; } } ps.close(); br.close(); client.close(); } catch (IOException e) { e.printStackTrace(); } } }).start(); } } catch (IOException e) { e.printStackTrace(); } } } public class TCPClient { public static void main(String[] args) { try { Socket client = new Socket("localhost", 8001); client.setSoTimeout(10000); BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); PrintStream out = new PrintStream(client.getOutputStream()); BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream())); while (true) { System.out.print("input: "); String str = input.readLine(); out.println(str); if ("bye".equals(str)) { break; } String read = br.readLine(); System.out.println("server: " + read); } input.close(); client.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
相关文章推荐
- Network——Socket网络通信机制以及实现举例(TCP、UDP等)
- 基于TCP和UDP的socket通信(C++实现)
- 使用JAVA实现Socket通信,TCP、UDP简析。
- android 开发之socket编程 UDP和TCP通信实现
- 使用JAVA实现Socket通信,TCP、UDP简析。
- windows下C调用socket实现TCP和UDP通信
- android 开发之socket编程 UDP和TCP通信实现
- 通信网络实验——UDP 的socket实现
- 利用Tcp和socket实现的客户端与服务端的简单通信
- java分布式开发TCP/IP NIO无阻塞 Socket((基于消息方式实现系统间的通信) )(转)
- Linux网络通信(二)Socket编写TCP/UDP
- Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)
- Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)
- VC++实现检测网络状态所有的TCP与UDP通信
- 运用JAVA的concurrent.ExecutorService线程池实现socket的TCP和UDP连接
- C++ 简单的 Tcp 实现[socket] 客户端与客户端通信
- java 通过 socket 实现 服务器和客户端的通信 TCP
- java 通过 socket 实现 服务器和客户端的通信 TCP
- 利用TCP和UDP协议,实现基于Socket的小聊天程序
- Socket网络通信理论基础搜集(TCP/IP协议栈与数据包封装+TCP与UDP的区别)