2022-08-11 第二组刘禹彤 学习笔记
打卡30天
###学习笔记
网络编程(网络通信)
- 服务器:是一台电脑(低配)
客户端:是一台电脑,是手机,是平板,是网页
Socket编程
Socket编程是建立在是TCP/IP协议上
1.如何在网络环境下访问其他的主机
通过IP地址+端口号形式可以访问其他的主机2
2.查看自己的电脑在当前网络环境下的IP地址
通过指令控制台CMD:ipconfig查看ipv4地址,是当前局域网下的ip地址
3.一个电脑可以有好多个端口号,每个端口号对应的程序也可以不同
当我们通过IP地址+端口号访问一个指定的应用程序的时候,
192.168.1.1.8888 192.168.1.1.9999
Socket通信服务端是一个对象:ServerSocket类
4.UDP:不可靠的传输协议
- C/S架构:Client/Server 客户端/服务器(QQ,360,腾讯会议,游戏)
B/S架构:Browser/Server浏览器/服务器( 移动互联,手机端为主)
C/S架构, Java主要要做的就是架构中的Server端。
1.静态资源:所有用户访问后,得到的结果都是一样的。html
2.动态资源:每个用户访问后,得到的结果可能不一样。爱奇艺
- web服务器: 接收用户的请求,处理请求,给出响应。
通过浏览器访问我们的ServerSocket服务器,我们通过浏览器给我们的ServerSocket服务器发起了 请求 我要访问服务器!!!
- 通过IP地址 + 端口号
本机的IP地址: 1.cmd---ipconfig
2.127.0.0.1---本机(个人建议,任何情况都好使)
3.localhost---本机(前提条件:你的电脑要联网,激活一下网卡)
我们通过浏览器访问我们的ServerSocket,得到了一堆信息,看不懂。
其实发送过来的信息:报文。浏览器传递过来的一些消息。
- User-Agent:告诉服务器我是从什么样的客户端来的。
Host: 127.0.0.1:8080,主机地址,目标主机。
貌似浏览器也是通过Socket和我们的服务器建立了TCP连接 我们不妨把浏览器给我们的服务器发送的信息称之为“请求”, 而且这个请求格式满足了http的协议。
- 请求:客户端--->服务器
响应:服务器--->客户端 我需要给浏览器一个响应!!!
我们一般情况下,给浏览器做出响应,需要遵循浏览器的格式要求
- 重定向
假如我要访问的是www.baidu.com,结果页面展示的是www.jd.com 重定向会重新定位到新的页面,而且地址栏的地址也会随之变化。
###学习心得
今天学习了一些网络编程相关的内容,发现面向对象是Java开发的基础,之前学习过的东西到目前都有涉猎,还是应该把基础打牢
###掌握情况:一般
###课上练习
package a; import org.junit.Test; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.ServerSocket; import java.net.Socket; public class Ch01 { @Test public void server() throws IOException { //创建一个服务器对象,绑定在8888端口 ServerSocket serverSocket = new ServerSocket(8888); System.out.println("服务器已启动"); //服务器在等待客户端连接 Socket socket = serverSocket.accept(); //读取客户端发送过来的消息 InputStream inputStream = socket.getInputStream(); byte[] buffer = new byte[1024*1024]; int len; while ((len = inputStream.read(buffer)) != -1){ System.out.println("服务器已接收客户端的数据:" + new String(buffer,0,len)); } } @Test public void client() throws IOException { //创建一个Socket通信客户端 Socket socket = new Socket(); //第一个参数就是获取当前电脑的IP地址 //第二个参数就是服务器的端口号 socket.connect(new InetSocketAddress(InetAddress.getLoopbackAddress(),8888)); //客户端发送数据给服务器 OutputStream outputStream =socket.getOutputStream(); String data = "hello,server!"; outputStream.write(data.getBytes()); System.out.println("客户端已发送数据:" + data); outputStream.close(); socket.close(); } }
###运行结果