【Java】Socket入门 [一]
来源:互联网 发布:matlab mac版安装教程 编辑:程序博客网 时间:2024/05/22 06:44
前言:
两台计算机通过网络进行通讯
1、两台主机有唯一标识——IP地址
2、需要共同的“语言”——协议
3、一台主机上可以运行多个程序,区分程序——端口
一、TCP/IP是目前世界上应用最为广泛的协议,是以TCP和IP为基础的不同层次上多个协议的集合,也称:TCP/IP协议族 或 TCP/IP协议线
TCP:Transmission Control Protocol 传输控制协议
IP:Internet Protocol 互联网协议
▲TCP/IP的五层层次模型
5、应用层(用户直接接触:HTTP、FTP、SMTP、Telnet)
4、传输层(TCP/IP)
3、网络层
2、数据链路层
1、物理层(网线、网卡……)
▲IP地址:
IPV4版本:32位二进制 例192.168.0.1
▲端口:
1、用于辨识不同应用程序
2、端口号范围为0~65535,其中0~1023为系统保留
3、IP地址和端口号组成了所谓的Socket,Socket是网络上运行的程序之间双向通信链路的终结点,是TCP和UDP的基础
4、常见协议使用的端口号:http:80 ftp:21Telnet:23
二、Java上的网络支持
▲InetAddress:用于标识网络上的硬件资源(IP地址)
▲URL:统一资源定位符,通过URL可以直接读取或写入网络上的数据
▲Sockets:使用TCP协议实现网络通信的Socket类
▲Datagram:使用UDP协议,将数据保存在数据报中,通过网络进行通信
1、InetAddress
没有构造方法
public class Test {public static void main(String[] arg) throws UnknownHostException{//获取本机InetAddressInetAddress address = InetAddress.getLocalHost();System.out.println("计算机名:"+address.getHostName());System.out.println("IP地址:"+address.getHostAddress());byte[] bytes = address.getAddress();//获取字节数组形式的IP地址System.out.println("字节数组形式的IP:"+Arrays.toString(bytes));System.out.println(address);//直接输出InetAddress对象//根据机器名获取InetAddressInetAddress address2 = InetAddress.getByName("dell");//根据IP地址获取InetAddress address3 = InetAddress.getByName("172.20.1.5");}
2、URL
▲URL(Uniform Resource Locator)统一资源定位符,表示Internet上某一资源的地址;
▲URL由两部分组成:协议名称和资源名称,中间用冒号隔开
▲在java.net中提供了URL类来表示URL
public static void main(String[] args) {// TODO Auto-generated method stubtry {//创建一个URLURL myUrl = new URL("http://blog.csdn.net/a565815942/article/details/50838129");System.out.println("协议:"+myUrl.getProtocol());System.out.println("主机:"+myUrl.getHost());System.out.println("端口:"+myUrl.getPort());//如果未指定端口号,则使用默认,返回-1System.out.println("文件路径:"+myUrl.getPath());System.out.println("文件名:"+myUrl.getFile());System.out.println("相对路径:"+myUrl.getRef());System.out.println("查询字符串:"+myUrl.getQuery());} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
3、使用URL读取网页内容
通过URL对象的openStream()方法可以得到指定资源的输入流。
通过输入流可以读取、访问网络上的数据
public static void main(String[] args) {try {URL url = new URL("http://www.baidu.com");//获取URL表示的资源的字节输入流InputStream is = url.openStream();//将字节输入流转换成字符输入流InputStreamReader isr = new InputStreamReader(is);//为字符输入流添加缓冲BufferedReader br = new BufferedReader(isr);String data = br.readLine();while(data != null){System.out.println(data);data = br.readLine();}br.close();isr.close();is.close();} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
- 【Java】Socket入门 [一]
- java socket网络编程入门一
- 【Socket编程一】Java Socket编程入门介绍
- JAVA,Socket入门
- Java Socket编程入门
- socket入门 java
- 【Java】Socket入门 [二]
- java。socket编程入门
- Java Socket编程入门
- Socket 入门一 连接主机
- socket编程入门(一)
- JAVA(一)|Socket
- Java Socket基础(一)
- Java的Socket(一)
- java Socket通信(一)
- java Socket通信(一)
- java Socket通信(一)
- java Socket通信(一)
- ????????
- 写个如何画燃尽图表的文档
- 大端模式和小端模式
- 对10个随机数求和(5)
- 直接选择排序
- 【Java】Socket入门 [一]
- Eclipse中tomcat出现timeout
- Android进阶学习-AIDL
- 简单分页插件,kkpager
- 不使用外部样式实现hover悬停
- Matalab-线性代数函数总结
- Bilateral Filtering for Gray and Color Images
- 设计模式单实例的总结
- ASP.NET MVC4 & Entity Framework 6.0 IIS 部署出错解决方案