Socket套接字概述
- 网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字。(ip地址和端口一起构成一个能识别的标识符套接字)
- 通信的两端都有Socket。
- 网络通信其实就是Socket间的通信。
- 数据在两个Socket间通过IO流传输。
- Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的IP和port。
ps:也就是通信的两端都会创建一个Sockt套接字,然后俩个Scoket套接字进行通信。可以理解为一个航运的过程,Socket就是码头,来往的船只就是数据,海峡两岸的互相来往其实就是码头与码头的互相来往。
客户端向服务器发送数据
服务端实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| public class ServerTCP { public static void main(String[] args) throws IOException { System.out.println("服务端启动 , 等待连接 .... "); ServerSocket ss = new ServerSocket(6666); Socket server = ss.accept(); InputStream is = server.getInputStream(); byte[] b = new byte[1024]; int len = is.read(b); String msg = new String(b, 0, len); System.out.println(msg); is.close(); server.close(); } }
|
客户端实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public class ClientTCP { public static void main(String[] args) throws Exception { System.out.println("客户端 发送数据"); Socket client = new Socket("localhost", 6666); OutputStream os = client.getOutputStream(); os.write("你好么? tcp ,我来了".getBytes()); os.close(); client.close(); } }
|
服务器向客户端回写数据
服务端实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| public class ServerTCP { public static void main(String[] args) throws IOException { System.out.println("服务端启动 , 等待连接 .... "); ServerSocket ss = new ServerSocket(6666); Socket server = ss.accept(); InputStream is = server.getInputStream(); byte[] b = new byte[1024]; int len = is.read(b); String msg = new String(b, 0, len); System.out.println(msg); OutputStream out = server.getOutputStream(); out.write("我很好,谢谢你".getBytes()); out.close(); is.close(); server.close(); } }
|
客户端实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| public class ClientTCP { public static void main(String[] args) throws Exception { System.out.println("客户端 发送数据"); Socket client = new Socket("localhost", 6666); OutputStream os = client.getOutputStream(); os.write("你好么? tcp ,我来了".getBytes()); InputStream in = client.getInputStream(); byte[] b = new byte[100]; int len = in.read(b); System.out.println(new String(b, 0, len)); in.close(); os.close(); client.close(); } }
|