黑马程序员-江远云 我的java语言基础之路3-网络编程篇

---------------------- android培训java培训、期待与您交流! ----------------------


网络编程
从c盘拷到b盘是单机版的
从张三的电脑拷到李四的电脑叫网络版的,这就涉及到了网络通信
  ip地址或主机名是标识的,可以通过ip找到对方,数据要发送到对方指定的应用程序上,为了标识这些应用程序,所以给这些网络应用程序都用数字进行标识。为了方便称呼这个数字,叫做端口
逻辑端口是区别物理端口的。
域名解析
访问主机时,做了什么事?浏览器解析完这句话以后,看协议然后解析主机和端口
        当我们写主机名时,要翻译成ip地址,想要将主机名翻译成ip地址,需要域名解析,需要dms域名解析服务器
先去公网上去找域名解析服务器,浏览器会去找,映射表,客户端会先找主机,
先找dms,把地址返回客户机
只要是公网的,就可以用,dns,发请求过去
要有记录才能解析成功。没走公网,走http://127.0.0.0:8080
和http://localhost:8080  其实127和localhost的映射关系就在本机上
c:\windows\system32\etc\hosts,说明一个地址可以定义多个名字
当访问主机时,先找本地,本地没有,再找外面,哥们先找这个hosts文件
这主机名看看有没有对应地址,它就把这地址给浏览器了。直接在本地走域名
解析,不用找网络dns,比较快,找新浪地址.先访问本地,在找的时候,向某一
网址发请求。映射表,映射成我本地的,连不出去。直接输出ip地址就走
没查到就会出现这页无法显示
IP地址
IP地址是用来标识设备的。IP地址不太好记忆,是用数字组成,四级的,可以用名字标识
127.0.0.1主机名默认是:localhost本地主机的名字。其实你访问的百度的计算机,ip地址
记不住,所以用容易的主机名表示。主机名,世界各地都有,所有有个标准,http://
表明。主机和ip地址相对应。要找net包。网络地址InetAddress。面向对象可将复杂事情简单化,
有未知主机异常,如果IP地址和主机名没有在网络上,找到了,不能解析,
而本地有才能解析。主机名和ip地址相对应,以地址为主最方便,以主机名还要解析
百度主机不一定有一台主机,而且一个主机可能有多个服务器
主机名还得解析。
Socket
网络编程指的就是Socket编程,Socket翻译过来就是插座。
两台机器想要通讯,得要个网口,搞根网线,有个插口。意思是每个应用程序都有类似的插座。
两个端点的插座可以这样理解,理解为码头也可以,通讯的般,跑来跑去,唯一性
相当于一个网络应用程序,被计算机主板处理通过网卡传输出去,通讯两端先得有插座,
TCP传输
特点是面向连接,可靠的,也要求对应对象,分的是客户端和服务端
分别对应了Socket和ServerSocket,作为两个端点建立完后就可以通讯。
客户端一建立就连接服务端。依赖建立好的通路。空参数的客户端没连接,但可通过方法连接。
客户端对象一建立时,就可以去连接指定的主机,因为TCP是面向连接的。
成功了,通路就建立了,通路一建立,就有一个网络流,Socket流。
数据有读有写,所以Socket既有输入流,也有输出流。发送数据是输出流。
流是通过Socket建立的,关闭了Socket就关闭了流。服务端会连接很多客户端,会冲突吗?
哥们没流对象,我拿着你的流对象就可以通讯。客户端具备输入输出,服务端也具备输入输出。
有很多人为你服务,不会乱。SeverSocket()一建立,就会绑定端口,监听一个端口,其实就是一个标识。
accept方法可以获取,没有连接就会等。关闭一般是可选择。这里有个源,既不是键盘输入,而是网络流。
Tomcat服务端
客户端是浏览器,服务端是Tomcat。玩服务器先连接端口,
class  Test
{
public static void main(String[] args) throws Exception
{
//建立socket服务。监听一个端口。
ServerSocket ss = new ServerSocket(10003);


//通过accept方法获取连接过来的客户端对象。
while(true)
{
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));


s.close();//关闭客户端.
}
//ss.close();
}
}



---------------------- android培训java培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net/heima

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值