网络编程基础了解

来源:互联网 发布:食品网络营销策划方案 编辑:程序博客网 时间:2024/06/17 05:24

各种定义

网络编程:解决计算机与计算机之间的数据传输问题

区别:
网络编程:不需要基于html页面就能达到数据之间的传输,比如:qq客服端,微信

网页编程:各种网页系统,淘宝网,qq网页端

计算机网络:分布在不同区域的计算机通过外部设备链接起来达到消息互通,
资源共享的效果称为一个计算机网络

网络通讯3要素:
IP地址
端口号:用于标明该消息是给那个应用程序处理的,只不过是个标识符
协议

IP地址:IP地址的本质就是一个由32位的二进制数据组成的数据,后来
别为了方便记忆,就把IP分出4份,每份8bit,2^8=0-255

IP地址=网络号+主机号

IP地址的分类:
A类地址 = 一个网络号+三个主机号 2^24台机器 政府单位
B类地址 = 二个网络号+两个主机号 2^16 事业单位(学校,银行)
C类地址 = 三个网络号 + 一个主机号 2^8 私人网络

IP类:

InetAddress

常用方法:
getLocalHost()//获取本机的IP地址对象
getHostAddress()//获取本机的IP地址
getHostName()//获取主机名
getByName()//在确定主机名的情况下返回IP地址
,也可以根据一个IP地址的字符串或者一个主机名活动IP地址对象
getAllByName()//返回一个IP地址的数组形式

端口号是没有类描述的:

    有范围:0-65535    0-1023:系统绑定了一些服务,已经被系统占用。    1024-49151:有些端口被用了,有些没被用(基本没碰到被使用的)    使用基本1024-65535基本都能使用

网络通讯的协议:

1. udp通讯协议:
1.将数据及其源和目的封装成数据包,不需要建立连接
2.每个数据包大小限制在64k
3.因为无连接,使用不可靠
4.因为不需要建立连接,使用速度快
5.udp不分服务端与客服端,只分发送端与接收端
比如:物管的对讲机

注意:udp是一个不可靠的协议(数据可能丢失)
什么情况下会数据丢失了:
1.带宽不足
2.cpu的处理能力不够

2.tcp通讯协议:
1.基于IO流,面向连接,有特有的通道
2.连接数据传输,无限制
3.通过三次握手机连接,可靠协议
4.通信前必须建立连接,效率稍低
5.tcp要严格区分客服端与服务端的

udp与tcp的使用

在java中网络通讯称作Socket(插座)通讯,要求通讯的两台机器必须要安装Socket
不同的协议有不同的Socket

1.udp协议下的Socket:

DatagramSocket(udp插座服务):用于发送和接收
DatagramPacket(数据包类)参数:buf,length,address,port
buf:传输数据的字节数组
length:发送数据内容的大小
address:收货地址
port:端口号

发送端的使用步骤:
1.使用DatagramSocket建立udp的服务(发送端无参构造)
2.使用DatagramPacket打包数据
3.发送数据
4.关闭资源


DatagramSocket datagramSocket=new DatagramSocket();
String data=”第一个例子”;
DatagramPacket datagramPacket=new DatagramPacket(data.getBytes(),data.getBytes().length, InetAddress.getLocalHost(),9090);
datagramSocket.send(datagramPacket);
datagramSocket.close();


接收端步骤
1.建立udp服务,传入端口号
2.建立数据包接收数据
3.调用udp服务接收数据
4.关闭资源


DatagramSocket datagramSocket=new DatagramSocket(9090);
byte[] buf=new byte[1024];
DatagramPacket datagramPacket=new DatagramPacket(buf,buf.length);
datagramSocket.receive(datagramPacket);
System.out.println(new String(buf,0,datagramPacket.getLength()));
datagramSocket.close();


2.tcp协议下的Socket
Socket(客服端) ,tcp的客服端一旦启动马上要与服务端进行连接
ServerSocket(服务端类)

发送端步骤:
1.建立tcp的客服端服务
2.获取对应的流对象


//建立tcp的服务
Socket socket=new Socket(InetAddress.getLocalHost(),9090);
//获取Socket的输出流对象
OutputStream outputStream=socket.getOutputStream();
outputStream.write(“服务端你好,这里是客户端”.getBytes());
socket.close();


接收端步骤:
1.建立tcp服务端的服务
2.接收客服端的链接产生一个socket
3.获取对象的流对象,读取获取写出数据
4.关闭资源


ServerSocket serverSocket=new ServerSocket(9090);
Socket socket = serverSocket.accept();//接收客服端的方法,该方法也是阻塞型的方法
InputStream inputStream=socket.getInputStream();
byte[] buf=new byte[1024];
int length=0;
while((length=inputStream.read(buf))!=-1){
System.out.println(new String(buf,0,length));
}


注意:
1.如果使用BufferedReader的readLine方法一定要把/r/n加上
2.使用字符流一定要调用flush方法把数据刷上去

原创粉丝点击