A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈雨 中级黑马   /  2013-5-16 20:55  /  1883 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陈雨 于 2013-5-16 21:22 编辑

看视频时发现一个疑问:服务器监听的是8080端口,但是客户端想服务器发的请求数据是11000端口,为什么端口不一样貌似还是能获得资源呢?
import java.io.*;
import java.net.*;
class MyIE
{
public static void main(String[] args)throws Exception
{
  Socket s = new Socket("192.168.1.254",8080);//访问TomCat服务器的端口
  
  PrintWriter out = new PrintWriter(s.getOutputStream(),true);
  out.println("GET /myweb/demo.html HTTP/1.1");
  out.println("Accept: */*");
  out.println("Accept-Language: zh-cn");
  out.println("Host: 192.168.1.254:11000");//明确访问主机类型,服务器上有多台主机访问哪台必须明确。
  out.println("Connection: closed");
  out.println();
  out.println();
  BufferedReader bufr = new BufferedReader(new InputStreamReader(s.getInputStream()));
  String line = null;
  while((line=bufr.readLine())!=null)
  {
   System.out.println(line);
  }
  s.close();
}
}
是不是因为自定义的服务器GET /myweb/demo.html HTTP/1.1的端口是11000,但服务器监听的端口和发送请求数据的服务器端口可以不一样?还是说是同个服务器的两个端口?

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

8 个回复

倒序浏览
一般来说客户端端口不是固定的,如果你在开一个客户端,端口还会变的。只要访问的是服务器的8080端口就可以
回复 使用道具 举报
继续再顶
回复 使用道具 举报
王溢君 来自手机 中级黑马 2013-5-18 00:32:22
板凳
Socket s = new Socket("192.168.1.254",8080);//访问TomCat服务器的端口。这里才是绑定发送端口。你那里的11000只是头文字的内容。
回复 使用道具 举报
王溢君 发表于 2013-5-18 00:32
Socket s = new Socket("192.168.1.254",8080);//访问TomCat服务器的端口。这里才是绑定发送端口。你那里的 ...

那写这个端口在这里的作用是干嘛的呢?不是明确访问服务器哪台主机吗?消息头,不是告诉服务器,客户端访问的资源是什么,可以接受的一些数据类型,语言,还有Host:192.168.1.254:11000明确访问主机的类型。
回复 使用道具 举报
本帖最后由 无妄无涯 于 2013-5-18 16:35 编辑

这个实际上市网络方面的问题,并不单纯属于编程问题。监听端口和数据传输端口本来就可以不是同一个,监听端口是由服务器指定的,数据传输端口往往是由客户端向服务端说明的。
服务器:招收小弟啦,有需求的call我,不过我很忙的,只接听8080线打进来的电话啊。
主机:(打8080)老大我要跟你混!
服务器:可以,你那那条路离我近啊?
主机:10000吧,老大有何吩咐?
服务器:好的,以后我让小包子(数据包)走那条路下达老子的指示。
主机:遵命!
=_=不知道这样你理解吗?

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

回复 使用道具 举报
陈雨 中级黑马 2013-5-18 16:46:46
7#
无妄无涯 发表于 2013-5-18 16:30
这个实际上市网络方面的问题,并不单纯属于编程问题。监听端口和数据传输端口本来就可以不是同一个,监听端 ...

貌似懂了,前提是必须先有10000这个端口,也就是服务器有多个主机端口,但它只监听8080的,同时其他的端口也能传数据,对吗?
回复 使用道具 举报
陈雨 发表于 2013-5-18 16:46
貌似懂了,前提是必须先有10000这个端口,也就是服务器有多个主机端口,但它只监听8080的,同时其他的端 ...

嗯,是的。服务器监听哪些端口由服务器管理员配置,客户端掌控不了,客户端的端口只要没禁用和被其他程序占用,都是可以用来数据传输的。
回复 使用道具 举报
陈雨 中级黑马 2013-5-18 17:12:06
9#
无妄无涯 发表于 2013-5-18 16:50
嗯,是的。服务器监听哪些端口由服务器管理员配置,客户端掌控不了,客户端的端口只要没禁用和被其他程序 ...

多谢了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马