网络编程基础知识
2016-04-22 01:58
543 查看
一、网络编程三要素:
1、IP
2、端口:在计算机上,可同时有多个程序接受网络数据,每个程序都至少占用一个端口
3、协议:双方都要使用同一种协议
二、IP:IP地址是计算机在互联网上,唯一标示此计算机的地址
IP地址的组成:网络号码 +
主机地址
A类:第一段为网络号,后三段为本地计算机主机号 1.0.0.1---127.255.255.254
B类:前两段为网络号,后两段为本地计算机主机号 128.0.0.1---191.255.255.254
C类:前三段为网络号,最后一段为本地主机号码 192.0.0.1---223.255.255.254
D类: 224.0.0.1---239.255.255.254
E类: 240.0.0.1---247.255.255.254
子网掩码:全部为1的是子网掩码,子网掩码相同的主机可以相互访问
特殊地址:127.0.0.1
回环地址,可用于测试本机的网络是否有问题。
DOS命令:ping命令:测试网络
ipconfig:查看本机IP地址
三、端口
1、物理端口:网卡口
2、逻辑端口:由操作系统定义并维护。Windows
下,逻辑端口的范围为0---65535
3、每个网络应用程序都至少占用一个逻辑端口,也可以同时占用多个;
4、每个端口同一时刻只能被一个应用程序占用
4、有效端口:0---65535,其中0---1024系统使用或者保留端口
四、协议
1、网络传输协议:UDP、TCP、HTTP、FTP....
2、网络编程涉及到的协议:TCP。UDP
3、UDP:
3/1 先将数据打包
3/2 不需要连接,可以没有接收方,发送方直接发送即可
3/3 由于不需要连接,不安全,速度快
类似于:广播。电视
3/4 发送的数据大小有限制,限制在64K
4、TCP:
4/1 面向 连接的,必须要有接受方
4/2 安全,速度慢(连接是需要双方发送握手信息)
类似于:打电话
五、InetAddress类
1、主要功能
InetAddress getByName(String hostName):获取任意主机
getHostName():获取主机名
getHostAddress():获取主机IP地址
例:
六、UDP的发送方
1、实例化一个Socket:DatagramSocket
2、准备数据:
2/1
目标IP
2/2
目标端口
2/3
信息内容
3、封装数据报:DatagramPacket
4、调用DatagramSocket的send()方法,发送数据报
例:
七、UDP的接受方
1、建立Socket对象:DatagramSocket(监听端口)
2、建立一个空的byte[]数组,准备接受数据
3、使用byte[]数组建立一个空的DatagramPacket对象,用于获取连接
4、调用DatagramSocket的receive()等待信息
5、一旦有信息回来,receice()将会返回,并将信息填充到对象中
6、通过数据报对象获取信息
例:
八、TCP发送方
1、面向连接的,一定要有接收方存在
2、步骤;
2/1
实例化一个Socket:java.net.Socket
构造方法:Socket(String host,int port)
2/2
因为要发送,通过Socket对象获取一个输出流
2/3
通过输出流输出信息
2/4
释放资源
九、TCP的接受方
1、实例化Socket:ServerSocket(监听端口)
2、调用ServerSocket的accept()方法等待客户端连接
3、一旦有客户端连接,accept()方法会返回一个Socket对象,此Socket对象跟发送端的Socket对象是对应的
4、由于要接受数据,从此Socket中获取一个输入流
5、读取数据
6、释放资源
1、IP
2、端口:在计算机上,可同时有多个程序接受网络数据,每个程序都至少占用一个端口
3、协议:双方都要使用同一种协议
二、IP:IP地址是计算机在互联网上,唯一标示此计算机的地址
IP地址的组成:网络号码 +
主机地址
A类:第一段为网络号,后三段为本地计算机主机号 1.0.0.1---127.255.255.254
B类:前两段为网络号,后两段为本地计算机主机号 128.0.0.1---191.255.255.254
C类:前三段为网络号,最后一段为本地主机号码 192.0.0.1---223.255.255.254
D类: 224.0.0.1---239.255.255.254
E类: 240.0.0.1---247.255.255.254
子网掩码:全部为1的是子网掩码,子网掩码相同的主机可以相互访问
特殊地址:127.0.0.1
回环地址,可用于测试本机的网络是否有问题。
DOS命令:ping命令:测试网络
ipconfig:查看本机IP地址
三、端口
1、物理端口:网卡口
2、逻辑端口:由操作系统定义并维护。Windows
下,逻辑端口的范围为0---65535
3、每个网络应用程序都至少占用一个逻辑端口,也可以同时占用多个;
4、每个端口同一时刻只能被一个应用程序占用
4、有效端口:0---65535,其中0---1024系统使用或者保留端口
四、协议
1、网络传输协议:UDP、TCP、HTTP、FTP....
2、网络编程涉及到的协议:TCP。UDP
3、UDP:
3/1 先将数据打包
3/2 不需要连接,可以没有接收方,发送方直接发送即可
3/3 由于不需要连接,不安全,速度快
类似于:广播。电视
3/4 发送的数据大小有限制,限制在64K
4、TCP:
4/1 面向 连接的,必须要有接受方
4/2 安全,速度慢(连接是需要双方发送握手信息)
类似于:打电话
五、InetAddress类
1、主要功能
InetAddress getByName(String hostName):获取任意主机
getHostName():获取主机名
getHostAddress():获取主机IP地址
例:
InetAddress add = InetAddress.getByName("Jaff");
六、UDP的发送方
1、实例化一个Socket:DatagramSocket
2、准备数据:
2/1
目标IP
2/2
目标端口
2/3
信息内容
3、封装数据报:DatagramPacket
4、调用DatagramSocket的send()方法,发送数据报
例:
DatagramSocket sendSocket = new DatagramSocket(); InetAddress ip = InetAddress.getByName("Jaff-pc"); int port = 8888; byte[] byteArray = "hello"; Datagrampaccket packet = newDatagramPacket(byteArray,byteArray.length,ip,port); sendSocket.send(packet); sendSocket.close();
七、UDP的接受方
1、建立Socket对象:DatagramSocket(监听端口)
2、建立一个空的byte[]数组,准备接受数据
3、使用byte[]数组建立一个空的DatagramPacket对象,用于获取连接
4、调用DatagramSocket的receive()等待信息
5、一旦有信息回来,receice()将会返回,并将信息填充到对象中
6、通过数据报对象获取信息
例:
DatagramSocket socket = new Datagramsocket(8888); byte[] byteArrar = new Byte[1024] DatagramPacket packet = newDatagramPacket(byteArray,byteArray.kength) socket.receive(packet); String ip = packet.getAddress().getHostAddress(); byte[] infoArray = packet.getData(); String str = new String(infoArray,packet.getLength()); socket.close();
八、TCP发送方
1、面向连接的,一定要有接收方存在
2、步骤;
2/1
实例化一个Socket:java.net.Socket
构造方法:Socket(String host,int port)
2/2
因为要发送,通过Socket对象获取一个输出流
2/3
通过输出流输出信息
2/4
释放资源
九、TCP的接受方
1、实例化Socket:ServerSocket(监听端口)
2、调用ServerSocket的accept()方法等待客户端连接
3、一旦有客户端连接,accept()方法会返回一个Socket对象,此Socket对象跟发送端的Socket对象是对应的
4、由于要接受数据,从此Socket中获取一个输入流
5、读取数据
6、释放资源
相关文章推荐
- HttpClient4 获取cookie
- 关于iOS SDK中HTTPS强制握手的经验分享
- libevent高性能网络库源码分析——事件循环(五)
- 深入HTTP协议
- HTTP Status 500
- Http中的重定向和请求转发
- 厦门巨游网络科技有限公司(HOTPOWER)承接游戏UI外包
- VIEWGOOD(远古)校园网络课堂直播点播录制解决方案
- http协议中apache隐藏头部版本信息,PHP版本信息隐藏
- Mono fix compiled issue "Are you missing `System.Net.Http' assembly reference?"
- javaweb中HTTP协议
- http://www.cnblogs.com/enshrineZither/p/3793459.html
- 关于计算机网络一些问题的思考
- [HTTP:101170]The servlet DelServletContextAttr is referenced in servlet-mapping /servlet/DelServlet
- HTTP协议(转)
- Atitit.http代理的实现 代码java php c# python
- Atitit.http代理的实现 代码java php c# python
- Socket网络编程 客户端与服务端通信流程
- 使用post的方式发送http请求
- Atitit.http代理的实现 代码java php c# python