java socket 浏览器_java Socket能写浏览器吗,我想用Socket写一个浏览器

展开全部

第一个问题:

当serversocket.accept()成功返回时(设为sSocket),就已经和客户端发起该连接请求的

socket线程之间建立起了tcp实体连接,这个链62616964757a686964616fe59b9ee7ad9431333332643337接当中包涵了该请求线程使用的端口号和ip地址,当sSocket通过输出流回送数据时,数据包里包涵了接收端的ip地址和客户端线程对应的端口号,当在该端口号上监听的socket监听到数据后,对数据进行加工处理(如浏览器显示)。

第二个问题:

单个浏览器窗口或者选项卡对应一个进程,每个进程发起tcp或者http请求时,将绑定到一个指定端口(如12340,23450等等),并在自己绑定的

端口上设置监听,当数据到来时是路由器将数据发送到指定内网ip地址,到达客户机之后根据数据包的端口信息,将数据发送到对应的端口,此时哪个进程的监听

端口听到了数据,就是哪个浏览器窗口或者选项卡显示。其他的窗口不监听该端口的,没有任何动作。

浏览器不管每次返回的资源是哪次的请求,发起请求的浏览器进程自动监听建立tcp连接时使用端口号,回送的数据包里包涵了端口号,所以操作系统知道该将数据发送到哪个端口。

就是说端口号是和内存中的应用程序绑定的。

这么说吧,所有的TCP/http请求都是在客户机绑定到某个端口后建立起来的,也就是说客户端的程序(如浏览器或者一般的java程序)在向服务器发送请求成功后就在客户机的那个端口设立了监听,比如浏览器发送请求时使用3333号端口,那么浏览器就在3333号端口等待数据的返回,接受完数据后,就绘制出来给用户使用。又比如一般java程序发送的socket请求使用了4444号端口,那么客户端socket就在4444号端口等数据,数据到来并接收完后就进行数据处理,如xml可以用在监听到数据流后构建一颗xml,dom树然后进行解析或者存入文件。

假如100线程都在同一个进程内,那么每个线程和server建立socket连接时都会使用一个自己独占的端口号,然后就等待数据返回到自己绑定的端口,100线程就会有100个端口号,操作系统接收到网络数据后将数据解包,找出是发向哪个端口的数据,然后转发过去,这时候肯定有个线程收到了数据,收到后想干嘛就是这个线程自己的事,跟其他线程无关啊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值