eisldkw 2023-07-29 11:59 采纳率: 20.5%
浏览 6

SOCKET服务器的问题

请问一下,在服务器上开了一个端口9900,建了一个SOCKET服务器,为什么我的客户端没有向这个服务器端的端口发送数据,它确收到了数据,请帮忙分析一下,这个数据来自哪里

还有一个问题是:

 为什么我这个云服务器,公网IP是  47.104.x.x  为什么直接写在监听端口左侧的IP时,不能用,写本机的172.31.x.x这个地址这个SOCKET服务器也不能正常用,为什么只能写0.0.0.0,时才能正常用。

还有我这个云服务器的公网IP 是  47.104.x.x 为什么不能填写到我的网卡的IP地址设置中?

img

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-07-29 14:06
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/350568
    • 你也可以参考下这篇文章:树莓派手机客户端连接失败问题解决(socket模块,C语言)
    • 除此之外, 这篇博客: 【网络编程】socket、端口、进程的关系中的 2. 内核是如何将数据包转发至 socket 的呢? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

      网络数据首先到达网卡,然后进入内核,由网络协议栈去处理,那么内核是如何进行数据分发的呢?它怎么知道该如何把数据交给特定的用户进程呢?

      这时,就需要 socket 发挥作用了!

      socket 中存储了特定的四元组: 源ip+port,目的ip+port;

      TCP Client :

      1. 源 ip+port ,socket 为 [src ip, src port) <=> (*, *)] ;
      2. Connect 到目的 ip+port,socket 变为 [src ip, src port) <=> (dst ip, dst port)];
      3. 通过 Socket 与 TCP Server 进行通信。

      Client 端,一个连接会占用一个系统端口。

      TCP Server:

      1. Accept 返回的 socket 为 [src ip, src port) <=> (dst ip, dst port)];每一个连接都对应一个 socket id。

      Server 端,所有连接共享同一个端口。

      当系统接收 TCP 网络数据时,根据端口定位到特定的进程,然后进程根据 socket id 区分来自不同 client 的数据。系统中所有 socket 中的四元组信息,必定唯一,不可能重复!

      这里写图片描述


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 7月29日

悬赏问题

  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥15 Oracle触发器记录修改前后的字段值
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题