服务器与客户端端口的关系?

hcl545 2012-11-12 01:26:37
各位大侠:
请问用socket编程的时候,需要分别为客户端与服务器端设置端口号。我知道服务器端的端口号的意思是服务器监听的所在计算机的端口号,那么客户端设置的端口号是什么意思呢?是需访问的服务器的端口?还是自身需要打开的端口号呢?
另外,请问:如果局域网内的计算机(做客户端)与有外网IP的计算机建立连接的时候,路由器会给(客户端)程序分配一个端口号,那么我可否利用这个端口号,在该程序中,建立一个服务器程序,供其它计算机来访问呢?非常感激!
...全文
1154 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hcl545 2012-11-30
  • 打赏
  • 举报
回复
引用 8 楼 smallprogramer 的回复:
NAT好像用UDP打洞比较容易实现吧。。。
恩,但TCP也有弄的,没实现,后面再研究
smallprogramer 2012-11-15
  • 打赏
  • 举报
回复
NAT好像用UDP打洞比较容易实现吧。。。
hcl545 2012-11-13
  • 打赏
  • 举报
回复
[quote=引用 6 楼 zhanshen2891 的回复:] 谢谢6#!啊,但我琢磨好一阵,却发现根本连不上啊。
zhanshen2891 2012-11-13
  • 打赏
  • 举报
回复
引用 2 楼 hcl545 的回复:
引用 1 楼 oyljerry 的回复:1. 客户端不需要设置端口号。客户端只要设置连接的服务器的端口号 2. 这个是一个临时的,通信结束了,路由器会释放这个连接,想一直有效就需要在路由器上做端口映射,把某个端口号分配个你客户端的这个机器,这样你这个机器上的程序就可以被外界访问了 谢谢1楼,也就是说客户端程序设置的端口号是服务器的端口,而与客户端自身的端口没关系了? ……
你说的这个不就是典型的TCP打洞么,这个要看NAT,有的可以成功,有的不可以。可以看一下TCP打洞。
hcl545 2012-11-12
  • 打赏
  • 举报
回复
引用 4 楼 coyer 的回复:
客户程序:端口一般指对方的端口,只有知道对方的端口才能去连接。不然是连不上的。 连接建立过程中,本地也是有端口的,不过这个操作系统自动分配,不用管。 服务器端则需要指定需要监听的本地端口,能接收所有的对方端口。 你说的端口转发,专业名词叫NAT,楼主可以看看TCP/IP方面的书。
谢谢,前两天看了一下NAT,就在网上找了些资料,但感觉好繁琐,再加上项目时间太紧,就想找个简单的方式完成任务,难得这样看来,要解决这个问题:除了NAT,没其它方法了吗?
coyer 2012-11-12
  • 打赏
  • 举报
回复
客户程序:端口一般指对方的端口,只有知道对方的端口才能去连接。不然是连不上的。 连接建立过程中,本地也是有端口的,不过这个操作系统自动分配,不用管。 服务器端则需要指定需要监听的本地端口,能接收所有的对方端口。 你说的端口转发,专业名词叫NAT,楼主可以看看TCP/IP方面的书。
hcl545 2012-11-12
  • 打赏
  • 举报
回复
我在网上看到过有用P2P网络连接的方式,解决在两个不同的局域网且都不能进行端口映射的计算机建立连接的问题,但看了很久也看不懂,不知道P2P的方式是不是就是我在2#提到的这种方式呢。
hcl545 2012-11-12
  • 打赏
  • 举报
回复
引用 1 楼 oyljerry 的回复:
1. 客户端不需要设置端口号。客户端只要设置连接的服务器的端口号 2. 这个是一个临时的,通信结束了,路由器会释放这个连接,想一直有效就需要在路由器上做端口映射,把某个端口号分配个你客户端的这个机器,这样你这个机器上的程序就可以被外界访问了
谢谢1楼,也就是说客户端程序设置的端口号是服务器的端口,而与客户端自身的端口没关系了? 对你提到的第2点,也就是说不可能在不进行端口映射的情况下,就将局域网内的计算机用作服务器了。但现在的问题是,我这里的局域网是3G无线上网的局域网,这是不能进行端口映射的。 我想的是:socket编程里面,应该是可以进行两个线程同时占用一个端口号的,这样的话:我可否通过服务器先与客户端建立起连接,而后服务器将获得的客户端端口号发给客户端,在前面的连接不断开的情况下,端口号就不会消失,此时客户端程序能否利用这个端口建立一个服务器端呢?
oyljerry 2012-11-12
  • 打赏
  • 举报
回复
1. 客户端不需要设置端口号。客户端只要设置连接的服务器的端口号 2. 这个是一个临时的,通信结束了,路由器会释放这个连接,想一直有效就需要在路由器上做端口映射,把某个端口号分配个你客户端的这个机器,这样你这个机器上的程序就可以被外界访问了
Re:CCNA_CCNP 思科网络认证 PAT NAT 端口或地址转换 与端口映射======================# 本章课程大纲        公网地址和私网地址        NAT应用场景        静态NAT  :static  地址转换        动态NAT  :dynamic地址转换        PAT        :端口地址转换        端口映射 :port map        在Windows上同时实现的NAT和端口映射 # 私网地址三类 A类:10.0.0.0                                255.0.0.0(1网段) B类:172.16.0.0 -172.31.0.0         255.255.0.0(16网段) C类:192.168.0.0-192.168.255.0  255.255.255.0(255网段) # NAT 的使用场景        NAT的最初的目的是允许把私有IP地址映射到公网地址,以减缓IP地址空间的消耗。        当一个组织更换它的互联网服务提供商ISP,但不想更改内网配置方案时,NAT同样很有用途。        以下是适于使用NAT的多种情况:         企业内网接入Internet节省公网地址         单向访问         大方向:内网访问互联网(互联网上主机不能够访问内网主机)         小方向:同单位实现两个网段之间单向访问(涉密部门能够访问其他部门,反之不可)         增加一个网段          避免在主干路由器增加到这个网段的路由         在Windows上实现的NAT和端口映射 # 网络地址转换的类型        下面介绍一下NAT的三种类型。         静态NAT 是为了在私网地址和公网地址间,允许一对一映射而设计的。         或者IPv4和IPv6之间的转换(典型)         不节省公网地址,故公网地址的利用效率不高,         无任何安全性,外网可以通过公网地址直接攻击内网主机,好像只增加路由器的工作         适用场景类似代理,可以较方便的更换主机,而无需修改路由器的配置         故应用不够广泛...         动态NAT 可以实现映射一个未注册 IP地址到注册IP地址池中的一个注册IP地址。         多对一,或多对多         比较PAT优势:避免被误认为攻击而被封ip地址         不太节省地址,应用不广泛         复用是最流行的NAT配置类型,也被称为端口地址映射(PAT)。         通过使用PAT,可实现上千个用户仅通过一个真实的全球 IP地址连接到Internet。         缺点:增加延迟,消耗路由器性能 # 端口映射(port mapping) 允许Internet上的计算机通过企业路由器的公网IP地址访问到内网的服务器------------------------------------------------         

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧