Java——网络编程

目录

一、什么是网络编程

1、常见的软件架构(CS & BS)

1.1、BS架构的优缺点​编辑

1.2、CS架构的优缺点​编辑

2、小结​编辑

二、网络编程三要素​编辑

1、IP​编辑

1.1、IPv4​编辑

1.2、IPv6​编辑

1.3、小结​编辑

1.4、IPv4的一些细节​编辑

1.5、InetAddress的使用

2、端口号​编辑

3、协议​编辑

3.1、TCP & UDP​编辑

三、UDP通信程序

1、发送数据​编辑

2、接收数据​编辑

3、UDP练习(聊天室)

4、UDP的三种通信方式(单播、组播、广播)

四、TCP通信程序​编辑

1、书写代码步骤​编辑

2、代码细节

2.1、三次握手

2.2、四次挥手

2.3、小结

五、综合练习

1、TCP通信练习1 —— 多发多收​编辑

2、TCP通信练习2 —— 接收和反馈​编辑

2.1、示例代码:

2.2、小细节:(socket read结束标记)

3、TCP通信练习3 —— 上传文件​编辑

4、TCP通信练习4 —— 上传文件(文件名重复问题)​编辑

4.1、UUID类​编辑

4.2、示例代码

5、TCP通信练习5 —— 上传文件(多线程版)​编辑

6、TCP通信练习6 —— 上传文件(线程池优化)​编辑

7、TCP通信练习7 ——  BS(接收浏览器的消息并打印)​编辑

8、TCP通信练习7 —— 网络编程(课后大作业)


一、什么是网络编程

1、常见的软件架构(CS & BS)

 

1.1、BS架构的优缺点

1.2、CS架构的优缺点

2、小结

二、网络编程三要素

 

1、IP

1.1、IPv4

1.2、IPv6

1.3、小结

1.4、IPv4的一些细节

 

局域网IP举例:(利用局域网节省IP) 

特殊的IP地址(回环地址): 

自己给自己发数据的话,可以直接使用127.0.0.1,这是因为不同路由器分配的IP不固定,造成想要自己给自己发数据,IP也要跟着变 

常用的CMD命令: 

1.5、InetAddress的使用

InetAddress类表示互联网协议(IP)地址

示例代码:

2、端口号

 

3、协议

 

3.1、TCP & UDP

UDP适用于:在线视频、网络会议

TCP适用于:发送邮件、文字聊天

 

三、UDP通信程序

1、发送数据

 示例代码

 

2、接收数据

示例代码

接收和发送端口要一致

这里发送的端口是随机的,你只需要保证要发送到的端口和接收端口一致即可

 小细节:receive方法是阻塞的

 

3、UDP练习(聊天室)

示例代码:(发送端) 

接收端

允许多个发送端:(允许一个类可以运行多次) 

 

4、UDP的三种通信方式(单播、组播、广播)

组播发送端代码:

组播接收端代码:

广播代码:

 

四、TCP通信程序

1、书写代码步骤

示例代码:(发送数据 -- 客户端)

(接收数据 -- 服务端):

但上述代码会出现中文乱码的问题,那么如何解决这个问题呢?

【Solution】:接收端要结合编码表进行接收,使用转换流InputStreamReader,将字节流转换成字符流。同时,为了进一步提高读写的效率,我们可以在外面再包上一层缓冲流BufferedReader.

 

2、代码细节

2.1、三次握手

2.2、四次挥手

四次挥手是为了确保连接断开,且数据处理完毕

2.3、小结

TCP挥手的时候,客户端会和服务端互发消息,其发送的数据包就是ICMP

五、综合练习

1、TCP通信练习1 —— 多发多收

示例代码:

Client

Sever

 

 

2、TCP通信练习2 —— 接收和反馈

2.1、示例代码:

2.2、小细节:(socket read结束标记)

 那么解决办法也很简单,写一个结束标记即可

 

3、TCP通信练习3 —— 上传文件

 

示例代码:

Client

Server 

4、TCP通信练习4 —— 上传文件(文件名重复问题)

4.1、UUID类

但不想要横杠,应该如何处理:replace()替换 

4.2、示例代码

与练习3相比,代码更改如下

客户端代码没有任何修改 

5、TCP通信练习5 —— 上传文件(多线程版)

示例代码:

Server

MyRunnable.java

客户端代码没有任何修改

 

6、TCP通信练习6 —— 上传文件(线程池优化)

 

 

7、TCP通信练习7 ——  BS(接收浏览器的消息并打印)

Server 

 在浏览器中输入IP和端口号,BS架构中,浏览器其实就是客户端

 

 

8、TCP通信练习7 —— 网络编程(课后大作业)

服务器端在这里的作用就是【消息转发

完整需求可参见【网络编程课后大作业完整需求.md】

待补充~

实现效果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值