InetAddress
Java中使用InetAddress类代表IP
代码
InetAddress inet1 = InetAddress.getByName("192.168.10.14");
System.out.println(inet1);
InetAddress inet2 = InetAddress.getByName("www.baidu.com");
System.out.println(inet2);
//获取域名
System.out.println(inet2.getHostName());
//获取IP地址
System.out.println(inet2.getHostAddress());
Socket
端口号和IP地址的组合得出一个网络套接字:Socket。
Socket编程
客户端发送消息给服务端,服务端打印消息。服务器端返回打印成功给客户端。
//客户端
public void client() throws IOException {
//对方的IP
InetAddress inet = InetAddress.getByName("127.0.0.1");
//创建一个socket
//IP地址 端口
Socket socket = new Socket(inet,8899);
//流
OutputStream os = socket.getOutputStream();
os.write("这里是客户端".getBytes());
//接收服务器的返回
InputStream is = socket.getInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[5];
int len;
while ((len=is.read(buffer))!=-1){
String str = new String(buffer,0,len);
baos.write(buffer,0,len);
}
System.out.println(baos.toString());
//释放资源
os.close();
socket.close();
}
//服务端
public void server() throws IOException {
//自己的端口
ServerSocket ss = new ServerSocket(8899);
Socket socket = ss.accept();
//流
InputStream is = socket.getInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[5];
int len;
while ((len=is.read(buffer))!=-1){
String str = new String(buffer,0,len);
baos.write(buffer,0,len);
}
System.out.println(baos.toString());
OutputStream os = socket.getOutputStream();
os.write("你好,已收到".getBytes());
baos.close();
is.close();
socket.close();
ss.close();
}
UDP网络编程
//发送端
public void send() throws SocketException, UnknownHostException {
DatagramSocket socket = new DatagramSocket();
String str= "UDP发送的消息";
byte[] data = str.getBytes();
InetAddress inet = InetAddress.getLocalHost();
//数据报
//传送对象 偏移量 长度 发送对象 端口号
DatagramPacket packet = new DatagramPacket(data,0,data.length,inet,9090);
socket.close();
}
//接收端
public void receiver() throws IOException {
DatagramSocket socket = new DatagramSocket(9090);
byte[] buffer = new byte[100];
//数据放在哪儿 偏移量
DatagramPacket packet = new DatagramPacket(buffer,0,buffer.length);
socket.receive(packet);
//输出
System.out.println(new String(packet.getData(),0,packet.getLength()));
socket.close();
}