网路编程:
Inetaddress类:此类便是互联网协议(IP)地址
(常用方法)static Inetaddress getByName(String host):在给定机名的情况下确定主机的IP地址
String getHostaddress():返回IP地址字符串
public String getHostName():获取此IP地址名称
例如:
public class Demo {
public static void main(String[] args) throws UnknownHostException {
InetAddress add = InetAddress.getByName("Hello-C");
String ip = add.getHostAddress();
String pcName = add.getHostName();
System.out.println("ip : " + ip + " pcName = " + pcName);
}
}
Socket类:此类实现客户端套接字。套接字是两台机器通信的端点。
使用UDP发送数据:
1.封装Socket:DatagramSocket;
2.准备要发送的数据,IP地址,端口号;
3.封装数据包:DatagramPacket
4.使用DatagramSocket的方法,将数据包发送出去;
public class Demo {
public static void main(String[] args) throws IOException{
//1.封装Socket:DatagramSocket;
DatagramSocket socket = new DatagramSocket();
//2.准备要发送的数据,IP地址,端口号;
//1).数据
byte[] byteArray = "你好,这是使用UDP发送的数据!".getBytes();
//2).IP地址
InetAddress add = InetAddress.getByName("Lenovo-PC");
//3).端口
int port = 8888;
//3. 封装数据包:DatagramPacket
DatagramPacket packet = new DatagramPacket(byteArray,
byteArray.length,
add,
port);
//4.使用DatagramSocket的方法,将数据包发送出去;
socket.send(packet);
//5.释放资源
socket.close();
System.out.println("发送完毕!");
}
}
使用TPC协议接收和发送数据:
TCP是面向连接的,在发送数据之前,一定要建立连接,否则抛出异常;
所以要求"接收方"一定要先启动;
public class TCPSend {
public static void main(String[] args) throws IOException {
//1.实例化一个Socket
//端口是接收端使用端口。意思是:发送给192.168.40.148机器的8888端口
Socket socket = new Socket("192.168.40.148",8888);
//因为要发送数据,所以获取一个"输出流"
OutputStream out = socket.getOutputStream();
//发送数据
out.write("你好,这是使用TCP发送的数据,请接收!!".getBytes());
//关闭流;
out.close();
socket.close();
}
}
public class TCPReceive {
public static void main(String[] args) throws IOException{
//1.实例化一个ServerSocket
ServerSocket server = new ServerSocket(8888);
//2.等待连接
System.out.println("接收方等待连接......");
Socket socket = server.accept();
System.out.println("获取到一个连接!");
//3.要读取数据,获取输入流
InputStream in = socket.getInputStream();
//4.读取数据
byte[] byteArray = new byte[1024];
int len = in.read(byteArray);//因为对方发一次,这里只读一次;
String str = new String(byteArray,0,len);
System.out.println("接收到信息:" + str);
//5.释放资源
server.close();
}
}