狂神-网络编程笔记
1.1概述
地球村
寄快递
打电话:--连接-- 接了---通话 TCP
华短信: --发送了就完事了---接受()UDP
一、计算机网络:地理位置不同 多台连接,网络通信协议 ,实现资源共享
二、网络编程的目的:
传播交流信息:数据交换,通信
三、想要到达这个效果需要什么
1,如何定位到准确的一台主机 :IP、端口、定位到某些资源
2、找到主机,如何传输数据:网络协议
万物皆对象
面向百度编程----》
1.2网络通信要素
mspaint :打开画图快捷键
OSI七层(国际理想化的)
TCP/IP(应用比较多)4层:应用层、传输层(TCP、UDP)、网络层、数据链路层 http
2.1IP地址: InetAddress
唯一定位一台网络计算机 127.0.0.1 本机
ip地址分类:
1、IPV4/IPV6 ipv4,4个字节组成,0-255,42亿,30亿在北美亚洲4亿 2011年用尽
IPV6:128位,8个无符号整数
2、公网(互联网)-私网(局域网)
ABCD类地址:折半
192.168.XX.XX是内部使用
2.2域名:记忆IP问题!
ip:www.vip.com
3.1、端口
http:80、ftp:21
4.1:通信协议
协议==约定 ==普通话
网络通信协议:速率、传输码率、代码结果、传输控制。。。
分层
TCP/IP协议簇:实际上上一组协议
TCP和UDP对比
TCP:用户传输协议 打电话
连接,稳定
三次握手、四次挥手
最少需要三次,保证稳定连接
A 你愁啥?
B 瞅你咋地
A 干一次
****以上是握手***
A 我要走了!
B 你真的要走了么?
B 你真的真的要走了么?
A 我真的真的要走了
****以上是四次挥手***
客户端和服务端
传输完成,释放连接,效率低
UDP:用户数据包协议 发短信
不连接,不稳定
客户端和服务端:没有明确的界限
不管有没有准备好,都可以发给你
导弹攻击
DDOS:洪水攻击!(饱和攻击)
------------------------------
出名的协议
TCP
IP:网络互联协议

5.1TCP
客户端: 连接服务端socket 、发送信息
服务器:建立服务端口,等待用户的连接,返回客户端socket,接受用户的消息
待补代码
-------
-------
6.1文件上传
Tomcat
服务端
自定义S
Tomcat服务器S:Java后端开发
客户端
自定义C
浏览器B
7.1UDP
发短信
8.1多线程实现聊天功能
封装的发短信功能:
public class TalkSend implements Runnable{ DatagramSocket socket=null; private int fromport; private String toIp; private int toport; public TalkSend(int fromport, String toIp, int toport) { try { this.fromport = fromport; this.toIp = toIp; this.toport = toport; //声明的自己的端口号 this.socket = new DatagramSocket(fromport); } catch (SocketException e) { e.printStackTrace(); } } @Override public void run() { try { //准备数据:控制台读取System。in BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); while (true){ String data = reader.readLine(); byte[] datas = data.getBytes(); DatagramPacket packet = new DatagramPacket(datas, 0, datas.length, new InetSocketAddress(this.toIp, this.toport)); socket.send(packet); if(data.equals("bye")){ break; } } reader.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } }
封装的接受短信功能:
public class TalkReceive implements Runnable { DatagramSocket socket = null; private int fromPort; private String who; public TalkReceive(int fromPort,String who) { try { this.who=who; this.fromPort=fromPort; this.socket = new DatagramSocket(fromPort); } catch (SocketException e) { e.printStackTrace(); } } @Override public void run() { while (true){ try { //准备接受包裹 byte[] container = new byte[1024]; DatagramPacket packet=new DatagramPacket(container,0,container.length); socket.receive(packet); //断开连接 bye byte[] data = packet.getData(); String receiveData = new String(data, 0, data.length); System.out.println(who+":"+receiveData); if (receiveData.equals("bye")){ break; } } catch (IOException e) { e.printStackTrace(); } } socket.close(); } }
学生调用线程:
public class TalkStu { public static void main(String[] args) { new Thread(new TalkSend(7777,"localhost",8888)).start(); new Thread(new TalkReceive(9999,"老师")).start(); } }
老师调用线程:
public class TalkTea { public static void main(String[] args) { new Thread(new TalkReceive(8888,"学生")).start(); new Thread(new TalkSend(6666,"localhost",9999)).start(); } }
9.1URL资源组成
https://i.cnblogs.com/posts/edit;postId=15426947
协议 ://ip+端口/资源
public class UrlDemo { public static void main(String[] args)throws Exception { //1、下载地址 URL url = new URL("https://m701.music.126.net/20211030154618/be447625f6ef20dea05fe8729de629a5/jdyyaac/obj/w5rDlsOJwrLDjj7CmsOj/11106838661/b3b5/1faa/aaea/37e9f12bd03871cdc4c03b63fc974c98.m4a"); //2、连接到这个资源 HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection(); InputStream inputStream = urlConnection.getInputStream(); FileOutputStream fos = new FileOutputStream("37e9f12bd03871cdc4c03b63fc974c98.m4a"); byte[] buf = new byte[1024]; int len; while ((len=inputStream.read(buf))!=-1){ fos.write(buf,0,buf.length); //写出这个数据 } } }

浙公网安备 33010602011771号