TCP、UDP简单代码实现
TCP:面向连接(三次握手),传输可靠,但速度慢
服务端代码如下:
1 import java.io.IOException; 2 import java.io.OutputStream; 3 import java.io.PrintStream; 4 import java.net.ServerSocket; 5 import java.net.Socket; 6 7 public class Server { 8 public static void main(String[] args) throws IOException { 9 ServerSocket socket = new ServerSocket(9999); 10 System.out.println("准备就绪,等待连接..."); 11 Socket accept = socket.accept(); 12 System.out.println("连接到"+accept.getInetAddress().getHostAddress()); 13 OutputStream out = accept.getOutputStream(); 14 PrintStream printStream = new PrintStream(out); 15 printStream.print("你好,这里是服务器!(不要回答)"); 16 printStream.close(); 17 out.close(); 18 socket.close(); 19 20 } 21 }
客户端代码如下:
import java.io.IOException; import java.io.InputStream; import java.net.Socket; import java.util.Scanner; public class Client { public static void main(String[] args) throws IOException { Socket socket = new Socket("127.0.0.1",9999); InputStream inputStream = socket.getInputStream(); Scanner scanner = new Scanner(inputStream); while (scanner.hasNext()) { System.out.println(scanner.next());; } scanner.close(); socket.close(); } }
UDP:面向非连接,传输不可靠,速度快
接收端代码如下:
1 import java.io.IOException; 2 import java.net.DatagramPacket; 3 import java.net.DatagramSocket; 4 5 public class Receive { 6 public static void main(String[] args) throws IOException { 7 DatagramSocket socket = new DatagramSocket(110); 8 byte[] bytes = new byte[1024]; 9 DatagramPacket packet = new DatagramPacket(bytes, 1024); 10 socket.receive(packet); 11 System.out.println(new String(packet.getData())); 12 socket.close(); 13 } 14 }
发送端代码如下:
1 import java.io.IOException; 2 import java.net.*; 3 4 public class Send { 5 public static void main(String[] args) throws IOException { 6 String s = "发送者:我来咯~"; 7 DatagramSocket socket = new DatagramSocket(10010); 8 DatagramPacket packet = new DatagramPacket( 9 s.getBytes(), 10 s.getBytes().length, 11 InetAddress.getLocalHost(), 12 110); 13 socket.send(packet); 14 socket.close(); 15 } 16 }

浙公网安备 33010602011771号