概述
Java是 Internet上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序。
Java提供的网络类库,可以实现无痛的网络连接,联网的底层细节被隐藏在Java的本机安装系统里,由JVM进行控制。并且Java实现了一个跨平台的网络库,程序员面对的是一个统一的网络编程环境。
IP地址:
端口号
InetAddress类---->ip地址
获取InetAddress类:静态方法
getLocalhsot()
getByName(String host)
常用的方法
TCP|IP协议:具体看计算机网络
Socket类:套接字:IP地址+端口号
获取Socket对象:
构造方法:public Socket(InetAddress address,int port);IP地址和端口号
public Socket(String host,int port)
TCP网络编程
@Test
public void client(){//客户端发一句话给服务端 服务端接收显示
InetAddress inetAddress = null;
Socket socket = null;
OutputStream os = null;
try {
inetAddress = InetAddress.getByName("127.0.0.1");
socket = new Socket(inetAddress,62346);
os = socket.getOutputStream();
os.write("helloWorld".getBytes());
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Test
public void server(){
ServerSocket serverSocket = null;
Socket accept = null;
InputStream inputStream = null;
try {
serverSocket = new ServerSocket(62346);
accept = serverSocket.accept();
inputStream = accept.getInputStream();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
byte[] buffer = new byte[5];
int len;
while ((len = inputStream.read(buffer)) != -1){
byteArrayOutputStream.write(buffer,0,len);
}
System.out.println(byteArrayOutputStream.toString());
byteArrayOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
inputStream.close();
accept.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
UDP网络编程
public static void sender() throws IOException {
DatagramSocket socket = new DatagramSocket();//第一步创建套接字
String s = "我是UDP方式发送的数据";
byte [] data = s.getBytes();
InetAddress inet = InetAddress.getByName("192.168.137.1");
DatagramPacket packet = new DatagramPacket(data,0,data.length,inet,8330);//放数据 ip地址与端口号
//创建packet包裹参数列表:数据byte数组,ip地址,端口号
socket.send(packet);//发送包裹
socket.close();
}
public static void receiver() throws IOException {
DatagramSocket socket = new DatagramSocket(8330);
byte[] bytes = new byte[1024];
DatagramPacket packet = new DatagramPacket(bytes,0,bytes.length);
socket.receive(packet);
System.out.println(new String(packet.getData(),0,packet.getLength()));
socket.close();
}
URL网络编程
URL构造器
、
针对URL的aHttp协议的URLConnection类
/**
* URL统一资源定位符
* http://localhost:8080/Idea/admin.html?name=shy%password=123
* http是协议 localhost主机名 8080 端口号 Idea 是工程名 admin.html工程下的资源 ?,,,后是参数列表
* @author FuQingsong
* @create 2023-03-01-19:20
*/
public class URlTest<url> {
public static void main(String[] args) {
// try {
// URL url = new URL("http://localhost:8080/Idea/admin.html?name=shy%password=123");
// System.out.println(url.getProtocol());//url协议名
// System.out.println(url.getHost());//主机名
// System.out.println(url.getPort());//端口号
// System.out.println(url.getPath());//url的文件路径
// System.out.println(url.getFile());//url的文件名
// System.out.println(url.getQuery());//url的查询名
// } catch (MalformedURLException e) {
// e.printStackTrace();
// }
URL url;
HttpURLConnection urlConnection;
InputStream inputStream = null;
FileOutputStream fos = null;
try {
url = new URL("http://localhost:8080/Idea/123.jpg");//url获取tomcat资源的地方
urlConnection = (HttpURLConnection)url.openConnection();//获取连接
urlConnection.connect();//打开连接
inputStream = urlConnection.getInputStream();//获取使用url连接的get方法输入流
fos = new FileOutputStream("124.jpg");//获取输出流
byte[] data = new byte[1024];
int lens;
while((lens = inputStream.read(data)) != -1){
fos.write(data,0,lens);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fos.close();
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}