黑马程序员技术交流社区
标题:
【石家庄校区】网络编程笔记
[打印本页]
作者:
巴拉巴拉x
时间:
2018-4-23 14:26
标题:
【石家庄校区】网络编程笔记
本帖最后由 小石姐姐 于 2018-4-24 19:58 编辑
网络编程笔记
网络编程
网络让不同的设备连接起来,互相访问
网络编程,通过编写的程序来实现不同设备之间的内容传输
Socket(套接字),一个Socket对象,就相当于定义一个发送,接收的对象(对象内容包括,计算机名,和程序端口)
网络通信的三要素
传输协议
通信的规则
TCP: 传输控制协议
建立链接,形成传输数据通道,进行大数据量传输,
三次握手,
效率低
有重发机制:保证了数据传输的准确性,但因为需要接受方发挥验证信息,所以数据发送时间长,数据流量大.
适用场景
适合准确性要求强的场合,比如金融系统,等
UDP:用户数据报协议
没有链接,不可靠,速度快,每个数据报(一个包)限制为最大64K.
使用场景:
适合实时性要求强的场合,比如网络电话等环境,这种协议延迟很小.还有实时视频通话.
IP地址:是一个二进制数字.(32位的(IPV4),一个字节8位,就相当于4个字节,限定了IP的范围;(IPV6 ,有16个字节)
关键字:InetAddress;
端口号:
物理端口:网卡口
逻辑端口.我们学的就是逻辑端口
0~65535个端口,前1024个端口号是系统保留端口号,
查看端口号:netstat -n;
一个网址,
http://baidu.com
http: 传输协议
baidu.com:IP地址,(通过DNS服务来转换成二进制数字)
端口号,网页默认80端口
Java中对IP地址和传输协议都有对应的类来进行操作
IP地址对应的类InetAddress
InetAddress类中的成员变量有二进制的IP地址,和主机名
doc命令:ipconfig,显示主机信息.
InetAddress类中获取的方法
String getHostAddress();返回的是IP地址
String getHostName();返回的是主机名
InetAddress getLoclaHost();
UDP协议发送数据
DateGramSocket类
构造方法
无参构造
有参构造,输入int类型的port(端口号)
这个构造的对象即可以发送也可以接受数据报包(DateGramPacket对象).
DateGranPacket对象包含的成员变量
byte[]: 数据
IP: 设备地址
port: 进程的地址,端口号.
有参构造,包含上边三个成员变量,打包成一个包即DateGranPacket对象.
创建发送端Socket对象
创建数据并打包
发送数据
释放资源
使用UDP协议接收数据
创建接收端Socket对象
接收数据
解析数据
处理数据
释放资源
UDP协议收发数据时的注意事项
端口号错误,数据可以正常发出,不会出现异常,但是收不到
接收端启动以后,端口号就被绑定了,再启动就会出现异常(java.net.BindException :Address already in use :Cannot bind);
解决办法,关闭占用端口的程序,或者换一个端口.
TCP协议发送数据
java.net.Socket类:客户端
java.net.ServerSocket: TCP服务端.
使用TCP协议发送数据
创建发送端Socket对象(明确服务端的IP地址和端口号)(创建链接)
参数是服务端的地址和端口号
获取输出流对象
发送数据
释放资源
使用TCP协议接收数据
创建接收端对象(ServerSocket类)(明确端口号);
监听(也是一种阻塞);
获取输入流对象,
获取数据
处理数据
释放资源
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2