叨叨两句
果然,过去的经历还是很有价值的,我已经不一样了。
26-05:网络编程(Socket)
-
Socket套接字概述
- 网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字】。
- 通信的两端都有Socket
- 网络通信其实就是Socket间的通信。
- 数据在两个Socket间通过IO流传输。
- Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的IP和port。
26-06:网络编程(UDP传输)
-
发送Send
- 创建DatagramSocket,随机端口号
- 创建DatagramPacket,指定数据、长度、地址、端口
- 使用DatagramSocket发送DategramPacket
- 关闭DatagramSocket
package test; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class Demo1_send { public static void main(String[] args) throws IOException { String str = "what are you"; DatagramSocket socket = new DatagramSocket();//创建码头 DatagramPacket packet = new DatagramPacket(str.getBytes(),str.getBytes().length,InetAddress.getByName("127.0.0.1"),6666);//创建集装箱,将数据装进去 socket.send(packet);//从码头中将集装箱发出去 socket.close();//关闭码头(底层是IO流) } }
-
接收Receive
- 创建DatagramSocket,指定端口号
- 创建DatagramPacket,指定数组,长度
- 使用DatagramSocket接收DatagramPacket
- 关闭DatagramSocket
- 从DatagramPacket中获取数据
package test; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; public class Demo2_receive { public static void main(String[] args) throws IOException { DatagramSocket socket = new DatagramSocket(6666); //创建码头 DatagramPacket packet = new DatagramPacket(new byte[1024],1024); //创建集装箱 socket.receive(packet);//接货,接收数据 byte[] arr = packet.getData(); int len = packet.getLength(); System.out.println(new String(arr,0,len)); socket.close(); } }
-
接收方获取ip和端口号
- String ip = packet.getAddress().getHostAddress();
- int port = packet.getPort();
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。