黑马程序员—21—java基础:有关网络编程的学习笔记和学习心得体会

 ------- <a href="http://www.itheima.com" target="blank">android培训</a><a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

1.  网络通讯要素

ip地址

端口号

传输协议

2.  2.1 找到对方ip

2.2 数据要发送到对方指定的应用程序上,为了标识这些应用程序,所以给

   这些网络应用程序都用数字进行标识,这个数字就叫端口:即逻辑端口。

2.3 定义通讯规则,这个通讯规则称为协议。

   国际组织定义了通用协议TCP/IP

例子:

import java.net.*;

import java.net.InetAddress;

public class IPDemo 

{

public static void main(String[] args) throws Exception

{

InetAddress i = InetAddress.getLocalHost();

System.out.println(i.toString());//获得的本主机名和主机ip

System.out.println("address:"+i.getHostAddress());//获取本主机地址

//InetAddress ia = InetAddress.getByName("192.168.1.106");//获取任意主机地址

InetAddress ia = InetAddress.getByName("www.baidu.com");

System.out.println("address:"+ia.getHostAddress());

}

}

3.  osi 参考模型           tcp/ip参考模型

应用层

应用层

表示层

回话层

传输层

传输层

网络层

网际层

数据链路层

主机至网络

物理层

4.  IP地址

网络中设备的标识

本地回环地址:127.0.0.1   主机名:localhost

端口号

用于标识进程的逻辑地址,不同进程的标识

有效端口:0-65535,其中0-1024系统使用或保留端口

传输协议

通讯的规则

常见协议:TCPUDP

5.  UDP

将数据及源和目的封装成数据包中,不需要建立连接

每个数据报的大小限制在64k

因无连接,是不可靠协议

不需要建立连接,速度快

TCP

建立连接,形成传输数据的通道

在连接中进行大数据量传输

通过三次握手完成连接,是可靠协议

必须建立连接,效率稍低

6.  Socket

Socket就是为网络服务提供的一种机制。

通信两端都有Socket

网络通信其实就是Socket间的通信

数据在两个Socket间通过IO传输

UDP

DatagramSocketDatagramPacket

DatagramSocket此类用于发送和接收数据报包的套接字

DatagramPacket数据报包用来实现无连接包的投递服务

建立发送端,接收端

建立数据包

调用Socket的发送接收方法

关闭Socket

发送端与接收端是两个独立的运行程序

7.  tcp 传输

建立客户端和服务器

建立连接后,通过Socket中的IO流进行数据的传输

关闭Socket

同样,客户端与服务器端是两个独立的应用程序

例子:

服务端

import java.io.InputStream;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

public class TcpServer 

{

public static void main(String[] args)  throws Exception

{

ServerSocket ss = new ServerSocket(10003);

Socket s = ss.accept();

String ip = s.getInetAddress().getHostAddress();

System.out.println(ip+"...connected");

InputStream in = s.getInputStream();

byte[] buf = new byte[1024];

int len = in.read(buf);

System.out.println(new String(buf,0,len));

OutputStream out = s.getOutputStream();

out.write("哥们收到".getBytes());

s.close();

ss.close();

}

}

客户端

import java.io.*;

import java.net.*;

public class TcpClient 

{

public static void main(String[] args) throws Exception

{

//创建客户端的Socket服务。指定目的主机和端口

Socket s = new Socket("192.168.1.200",10003);

//为了发送数据,应该获取Socket流中的输出流

OutputStream out = s.getOutputStream();

out.write("tcp ge men lai la".getBytes());

//收信息

InputStream in = s.getInputStream();

byte[] buf = new byte[1024];

int len = in.read(buf);

System.out.println(new String(buf,0,len));

s.close();

}

}

8.  URl

Url把地址封装成对象

RUL url = new URL(http://192.168.1.251/myweb/demo.html?name=haha&&age=30)

String getFile():获取URL的文件名

String getHost():获取URL的主机名

String getPath():获取URL的路径部分

String getPort():获取URL 的端口号

String getProtocol():获取URL的协议名称

String getQuery():获取URL的查询部

例子:

import java.net.*;

import java.io.*;

public class URLConnectionDemo 

{

public static void main(String[] args) throws Exception

{

URL url = new URL("http://192.168.1.254:8080/myweb/demo.html");

URLConnection conn = url.openConnection();

System.out.println(conn);

InputStream in = conn.getInputStream();

byte[] buf = new byte[1024];

int len = in.read(buf);

System.out.println(new String(buf,0,len));

}

}

9.  http://192.168.1.254:8080/myweb/demo.html

www.sina.com.cn  想要将主机名翻译成ip地址,需要域名解析:DNS

http://127.0.0.1:8080

http://localhost:8080

其实127和localhost的映射关系就在本机上:c:/windows/systems/drivers/ext/host

10.  学习心得体会

了解网络各层次的功能,

学会运用UDPTCP传输功能

 

 ------- <a href="http://www.itheima.com" target="blank">android培训</a><a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值