关于socket编程中的client端口问题
答案:1 悬赏:20 手机版
解决时间 2021-11-20 13:18
- 提问者网友:自食苦果
- 2021-11-20 05:17
关于socket编程中的client端口问题
最佳答案
- 五星知识达人网友:末日狂欢
- 2021-11-20 05:58
client 请求到服务器时,服务器会通过accept方法获取到客户端的socket,
Socket client = server.accept(); // 开启监听
所以不需要知道client的端口号,就能通信追问谢谢提醒。我发现调用 server.accept().getPort() 方法可以查看客户端socket端口。
但是我又糊涂了,这个Socket client与客户端中的
Socket client = new Socket("127.0.0.1",20001);有什么区别?追答1. 服务器或客户端,双方开启socket都各需要一个端口的,这是因为,每台机器都要一个端口,才能和外界进行交互。比如这里,服务器开启的是20006,客户端开启的是20001.
2. 客户端需要知道服务器的IP和端口(20006),才能连接到服务器
3. 服务器accept到客户socket请求时,可获取客户端的socket信息,但只是用于辅助。
通过socket句柄已经可以进行通信了,不用再创建新的socket去访问client。
4. 至于你说的 Socket client对象有什么不同
Socket client = new Socket("127.0.0.1",20001); // 客户端创建socket
Socket client = server.accept(); // 服务端接收到客户端的socket
可以理解为在不同机器上,用两个相同名字(client)的不同变量,描述了同一个数据链路socket
Socket client = server.accept(); // 开启监听
所以不需要知道client的端口号,就能通信追问谢谢提醒。我发现调用 server.accept().getPort() 方法可以查看客户端socket端口。
但是我又糊涂了,这个Socket client与客户端中的
Socket client = new Socket("127.0.0.1",20001);有什么区别?追答1. 服务器或客户端,双方开启socket都各需要一个端口的,这是因为,每台机器都要一个端口,才能和外界进行交互。比如这里,服务器开启的是20006,客户端开启的是20001.
2. 客户端需要知道服务器的IP和端口(20006),才能连接到服务器
3. 服务器accept到客户socket请求时,可获取客户端的socket信息,但只是用于辅助。
通过socket句柄已经可以进行通信了,不用再创建新的socket去访问client。
4. 至于你说的 Socket client对象有什么不同
Socket client = new Socket("127.0.0.1",20001); // 客户端创建socket
Socket client = server.accept(); // 服务端接收到客户端的socket
可以理解为在不同机器上,用两个相同名字(client)的不同变量,描述了同一个数据链路socket
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯