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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

网络编程里的客户端和服务端的问题咨询:
客户端:
            Socket socket = new Socket("127.0.0.1", 12345);
疑问一:因为是本机演示,所以接收的127.0.0.1。如果是和外机服务器连接,这里应该传的是本机的IP地址,还是服务器的IP地址。

百度上了解到:客户端通常对它所使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以了。客户端口号又称作临时端口号(即存在时间很短暂)。这是因为它通常只是在用户运行该客户程序时才存在,而服务器则只要主机开着的,其服务就运行。如果不是公认端或者保留端的话,端口号一般动态分配。


服务器:
          ServerSocket server = new ServerSocket(12345);
疑问二:如果说“new Socket("127.0.0.1", 12345);”中的12345端口号是客户端的端口号,那么服务器开启多线程时,也就是说会接收多个不同的客户端,为什么里面的端口号只绑定其中一个客户端的端口号呢?
有可能我的理解前提和认识就错了,希望大神给解释一下

7 个回复

倒序浏览
zhoubinjian 来自手机 金牌黑马 2016-6-26 02:22:33
沙发
与外机连接,是本机IP,至于端口,它是只能与一个程序或者服务绑定,这样访问访程序或者服务的时候,才不会端口冲突
回复 使用道具 举报
谢谢~
不过还有疑问,那“Socket socket = new Socket("127.0.0.1", 12345);”上面的端口号,是本机自己分配的呢?还是说服务端给客户端设定的,因为服务端的端口号一般是固定的。
还有因为请求是客户端先发出的,或者说ServerSocket server = new ServerSocket(12345);中端口号绑定的是客户端发过来的端口号?
如果是客户端的端口号,那么服务端下面的多线程就有问题了?
回复 使用道具 举报
zhoubinjian 来自手机 金牌黑马 2016-6-26 11:46:57
板凳
socket客户端的ip+端口号,是你指定要访问哪台计算机,那个服务,不是说自己定义的,你要对上服务端的服务端口,而SocketServer服务端的端口是给服务设定一个端口,接收客户端发送的数据
回复 使用道具 举报
zhoubinjian 发表于 2016-6-26 11:46
socket客户端的ip+端口号,是你指定要访问哪台计算机,那个服务,不是说自己定义的,你要对上服务端的服务 ...

这句话有疑问:socket客户端的ip+端口号,是你指定要访问哪台计算机,那个服务,不是说自己定义的,你要对上服务端的服务端口。
那么连接外机的时候“Socket socket = new Socket("127.0.0.1", 12345);”上面的IP地址不应该是服务端的IP吗?
如果是本机IP,“ServerSocket server = new ServerSocket(12345)”这里只有服务端端口号,
那么怎么找到服务端ServerSocket(服务端的IP+端口号)?
如果是服务端IP,是不是意味着客户端发送请求的时候,默认把自己的IP+接收端口号发过去了?

点评

Socket socket = new Socket("127.0.0.1", 12345);”上面的IP地址,表示你要连接哪台电脑,12345是要连接的那台电脑里面程序的端口号,然后服务端,你要接收客户端的信息,也要指定端口,然后服务端的ip就是本机的,   发表于 2016-6-26 18:29
回复 使用道具 举报
innovator 发表于 2016-6-26 12:44
这句话有疑问:socket客户端的ip+端口号,是你指定要访问哪台计算机,那个服务,不是说自己定义的,你要 ...

虽然回答没有完全解决疑惑,还是谢谢你的回答。
回复 使用道具 举报
看一看,瞧一瞧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马