TCP
服务端:
package com.ysdx.socket1; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class S1Impl0 implements ISocket1 { ServerSocket server; Socket socket; PrintWriter writer; BufferedReader reader; @Override public void work() { try { server=new ServerSocket(5001); socket=server.accept(); writer = new PrintWriter(socket.getOutputStream()); reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); String message=reader.readLine(); if (message!=null) { System.out.println(message); } else { System.out.println("No Message Here!"); } writer.close(); reader.close(); socket.close(); server.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
客户端:
package com.ysdx.socket0; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException; public class S0Impl0 implements ISocket0 { Socket socket; PrintWriter writer; BufferedReader reader; @Override public void work() { try { socket = new Socket("127.0.0.1", 5001); writer = new PrintWriter(socket.getOutputStream()); reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); writer.write("hello !"); writer.flush(); writer.close(); reader.close(); socket.close(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
UDP
一对一,需要选择合适的超时时间
package com.ysdx.udp0; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; import java.net.SocketException; public class UDP0 { public static void main(String[] args) throws IOException { InetSocketAddress address; DatagramPacket packet; DatagramSocket socket; byte []buffer=new byte[1024]; address=new InetSocketAddress("localhost", 5002); socket=new DatagramSocket(address); socket.setSoTimeout(60000); packet=new DatagramPacket(buffer, buffer.length); socket.receive(packet); String message=new String(packet.getData(), 0, packet.getLength()); System.out.println(message); // String reply="OK"; byte[] reply="OK".getBytes(); packet=new DatagramPacket(buffer, buffer.length, packet.getAddress(), packet.getPort()); packet.setData(reply); socket.send(packet); socket.close(); } }
package com.ysdx.udp1; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.InetSocketAddress; public class UDP1 { public static void main(String[] args) throws IOException { InetSocketAddress address; DatagramPacket packet; DatagramSocket socket; byte []buffer=new byte[1024]; socket=new DatagramSocket(); socket.setSoTimeout(60000); byte[] reply="Hello".getBytes(); packet=new DatagramPacket(buffer, buffer.length, InetAddress.getByName("localhost"), 5002); packet.setData(reply); socket.send(packet); packet=new DatagramPacket(buffer, buffer.length); socket.receive(packet); String message=new String(packet.getData(), 0, packet.getLength()); System.out.println(message); // String reply="OK"; socket.close(); } }