7 网络
约 415 字大约 1 分钟
2025-04-05
InetAddress
成员函数 | 说明 |
---|---|
static InetAddress getByName(String host) | 确定主机名称的IP地址。主机名称可以是机器名称,也可以是IP地址 |
String getHostName() | 获取此IP地址的主机名,如果局域网没有这个主机名则返回ip |
String getHostAddress() | 返回文本显示中的IP地址字符串 |
DatagramSocket
此类用于udp通信
发送数据
DatagramSocket ds = new DatagramSocket();
//2.打包数据
Stringstr="你好威啊!!!
byte[] bytes = str.getBytes();
InetAddress address = InetAddress.getByName("127.0.0.1");
int port = 10086;
DatagramPacket dp = new DatagramPacket(bytes,bytes.length,address,port);
//3.发送数据
ds.send(dp);
7/4.释放资源
ds.close();
接收数据
DatagramSocket ds = new DatagramSocket(port:10086);
//2.接收数据包
byte[] bytes = new byte[1024];
DatagramPacket dp = new DatagramPacket(bytes,bytes.length);
ds.receive(dp);
//3.解析数据包
byte[] data = dp.getData();
使用DatagramSocket套接字发送的数据都是单播
使用MulticastSocket套接字发送的数据是组播 使用方式和DatagramSocket是一致的,但在指定端口的时候要使用组播地址 接收方需要将本主机加入到组播地址组中
ms.joinGroup(address);//address就是组播地址
Socket
此类用于tcp通信
发送数据
Socket socket = new Socket("127.0.0.1",10000);
//2.可以从连接通道中获取输出流
OutputStream os = socket.getoutputStream();
7/写出数据
os.write("你好你好"·getBytes());
//3.释放资源
os.close();
socket.close();
接收数据
//1.创建对象ServerSocker
ServerSocket ss = new ServerSocket(10000);
//2.监听客户端的链接
Socket socket = ss.accept();
//3.从连接通道中获取输入流读取数据
InputStream is = socket.getInputStream();
int b;
while ((b = is.read())!=-1){
System.out.println((char) b);
}
7/4.释放资源
socket.close();
ss.close();
接收数据使用字节流可能会导致乱码,可以使用转换流
贡献者
版权所有
版权归属:PinkDopeyBug