黑马程序员——网络编程
来源:互联网 发布:python做app 编辑:程序博客网 时间:2024/06/03 23:41
------- android培训、java培训、期待与您交流! ----------
网络通讯最重要因素:1、ip地址(相当于人家快递员给你送快点一样) 2、端口(相当于你告诉人家小区以后,你要告诉人家具体几楼几栋几单元)A类IP段 0.0.0.0 到127.255.255.255 (0段和127段不使用)
B类IP段 128.0.0.0 到191.255.255.255
C类IP段 192.0.0.0 到223.255.255.255
XP默认分配的子网掩码每段只有255或0
A类的默认子网掩码 255.0.0.0 一个子网最多可以容纳1677万多台电脑
B类的默认子网掩码 255.255.0.0 一个子网最多可以容纳6万台电脑
C类的默认子网掩码 255.255.255.0 一个子网最多可以容纳254台电脑
ip地址对象:ip目前分 ip4 和 ip6。而xp系统好像都是ip4。通用协议,而ip6协议在window7 系统已经加入了。
ip地址对象:InteAddress,ip 没有直接的构造函数,他只有通过他的静态方法返回他的对象。
1、getByName(String):可以是域名,可以是以ip地址形式。
2、getLocalHost():返回本机对象。
3、getAllByName():一台机器对应多个ip地址时,返回 InteAddress数组
4、getHostAddress():返回对象的ip地址形式。
传输协议:分成2种形式:①UDP ②TCP
UDP:面向无连接,不需要建立连接,数据最大为64kb,速度快,不安全。(对讲机使用的就是该原理)
Tcp:面向连接,需要三次握手建立通道,当建立通道以后可以进行大数据传输,速度稍慢,安全。
UDP体验:我是使用过对讲机的,2部对讲机调成同一个频段以后,一方说话,另一方在有效范围内收到数据就会立即播放出来。。2个不在同一个频段上面,2个对讲机依然可以讲话,但是不可以互相接收数据了。 这里的频段可以理解为 端口。
看一下QQ,它使用了多线程技术,监听了不同的端口,而且还是采用的UDP。
TCP由于可以使用传输大数据,所以需要先建立理解。看人家迅雷。就是一个很好的例子!!如果人家迅雷采用UDP的话。你能有这么快的速度吗?
而且通过UDP下载以后,还有可能丢包呢。造成数据丢失呢。。而TCP就不会。
Socket:网络服务的 一种机制。通信2端的 应用程序必须先有Socket才能通信。
现在我来使用UDP将一段信息发送出去。
import java.io.*;import java.net.*;class UDPScoket{public static void main(String[] args) throws IOException{DatagramSocket ds = new DatagramSocket();<span style="white-space:pre"></span>//使用Socket服务BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));String message = bufr.readLine();byte[] data = new byte[1024];data = message.getBytes();DatagramPacket dp = new DatagramPacket(data,0,data.length,InetAddress.getByName("192.168.1.255"),55555);<span style="white-space:pre"></span>//定义数据包,并将该数据发送至哪里去ds.send(dp);<span style="white-space:pre"></span>//发送}}
由于发送端是没有设置端口的,所以系统自动分配了一个端口。。192.168.1.255 是广播地址,相当于给 192.168.1.2~192.168.1.254 发送信息,但是必须要有一个程序来接收并处理我发送的这些数据,并且他的端口必须是 55555
制作一个接收端:
import java.net.*;import java.io.*;class UDPPacket {public static void main(String[] args) throws IOException{DatagramSocket ds =new DatagramSocket(55555);//创建Socket服务,监听55555端口byte[] data = new byte[1024];DatagramPacket dp =new DatagramPacket(data,data.length);<span style="white-space:pre"></span>//定义数据包,存储接收的字节数据ds.receive(dp);//阻塞式方法,等到接收数据String ip = dp.getAddress().getHostAddress();//打印发来数据的Ip地址String message = new String(dp.getData(),0,dp.getLength());//取出数据System.out.println(ip + "发来讯息:" + message);}}
- 黑马程序员— 网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员 — 网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- UVA 10061 How many zero's and how many digits ?(数论)
- hdu1845Jimmy’s Assignment
- poj2503Babelfish
- 计算1-1/x+1/x*x
- 04-4. 猜数字游戏(15)
- 黑马程序员——网络编程
- hdu 1028 Ignatius and the Princess III
- 友元类
- codeforces 258B Little Elephant and Elections 数位DP+排列组合
- 【九度OJ】1014【快速排序】
- C/C++ sort函数的用法
- JIT技术(HHVM中有用到)
- HibernateTemplate和HibernateDaoSupport(spring注入问题)
- ios视频学习 3.5 类的继承与重载