package inet;
import java.net.InetAddress;
import java.net.UnknownHostException;
/**
* 网络编程:
* 网络: 一组相互连接的计算机(使用物理线路进行连接)
*
* 网络编程三要素:
* IP(ipconfig:查看本机ip):
* 唯一标识网络的每一计算机(两台计算机通信必备要素) ----》找到对方的位置
* 特殊的ip地址:127.0.0.1: 本机ip地址
* InetAddress
* 端口号:
* 每台计算机中不同应用程序的标号 --》具体门牌号
* 端口的范围: 0-65535之间
* 端口号:0-1023 被系统占用
* 特殊端口号:
* 1521: ---》Oracle
* 1433: ---》sqlserver
* 3306: ---》mysql
* 8080: ---》Tomcat
*
* 通信协议:通信的方式:
* UDP协议:
* 相当于发信息,不需要建立连接
* 数据报包的大小限制64K内
* 数据不安全,容易丢包
*
* TCP协议:
* 相当于打电话,需要建立连接
* 效率相对比较低,数据传输安全
* 三次握手
*
* Socket(套接字)与ServerSocket:
* 网络上的两个程序通过一个双向通信连接实现数据的交换,这个连接的一端称为Socket,一端称为ServerSocket
*
*/
public class Inet {
public static void main(String[] args) throws UnknownHostException {
InetAddress ia = InetAddress.getLocalHost();
System.out.println(ia);
System.out.println("主机名称"+ia.getHostName());
System.out.println("主机ip:"+ia.getHostAddress());
InetAddress iaa = InetAddress.getByName("Phoebe");
InetAddress iaaa = InetAddress.getByName("192.168.33.243");
InetAddress iia = InetAddress.getByName("www.baidu.com");
System.out.println("根据主机名称找IP地址:"+iaa.getHostAddress());
System.out.println("根据IP地址找主机名称:"+iaaa.getHostName());
System.out.println("通过网络域名找主机:"+iia.getHostAddress());
}
}
package udptest;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
/**
* 发送方
*
*/
public class AskClient {
public static void main(String[] args) throws IOException {
DatagramSocket ds = new DatagramSocket(8888);
String str = "鸡腿你吃吗?";
DatagramPacket dp = new DatagramPacket(str.getBytes(), str.getBytes().length, InetAddress.getLocalHost(), 7777);
ds.send(dp);
byte [] buf = new byte[1024];
DatagramPacket dp2 = new DatagramPacket(buf, buf.length);
ds.receive(dp2);
System.out.println(new String(buf,0,dp.getLength()));
ds.close();
}
}
package udptest;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
/**
* 接受方:
*
*/
public class AskServer {
public static void main(String[] args) throws IOException {
DatagramSocket ds = new DatagramSocket(7777);
byte [] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
ds.receive(dp);
System.out.println(new String(buf,0,dp.getLength()));
String str = "不吃,有毒";
DatagramPacket dp2 = new DatagramPacket(str.getBytes(), str.getBytes().length,dp.getAddress() , 8888);
ds.send(dp2);
ds.close();
ds.close();
}
}
![这里写图片描述](https://img-blog.csdn.net/2018030615220529?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzM3MjQzNzE3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
package tcptest;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
/**
* 客户端:
* 注意事项:
* 启动有先后,先启动服务器,再启动客户端
* 启动之后,客户端与服务器平级,谁发送数据都可以
*
*/
public class NetClient {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket client = new Socket("localhost", 6666);
OutputStream os=client.getOutputStream();
String str="你好呀";
os.write(str.getBytes());
client.shutdownOutput();
InputStream is = client.getInputStream();
byte [] buf = new byte[1024];
int len = is.read(buf);
System.out.println("服务器回复说:"+new String(buf,0,len));
is.close();
os.close();
client.close();
}
}
package tcptest;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 服务器:
*
*/
public class NetServer {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(6666);
Socket client=server.accept();
InputStream is = client.getInputStream();
byte [] buf = new byte[1024];
int len =is.read(buf);
String str = new String(buf, 0, len);
client.shutdownInput();
System.out.println("收到:客户端的IP为+"+client.getInetAddress()+"发送的消息为:+"+str);
OutputStream os = client.getOutputStream();
os.write("大家好才是真的好--- 广州好迪".getBytes());
client.shutdownOutput();
os.close();
is.close();
client.close();
server.close();
}
}
![这里写图片描述](https://img-blog.csdn.net/20180306152219473?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzM3MjQzNzE3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)