9. 怎么又是socket又是tcp

那么什么叫socket

有时候我们说搞socket编程, socket编程就是tcp的编程吗? tcp/udp是一种协议, 一种约定"我们俩怎么沟通"的约定, 一旦决定好怎么去沟通, 于是开始通信吧, 用的就是socket开始沟通

比如在Linux系统中socket是一种文件, 你可以打开/关闭一个socket, 也可以对socket进行读写. socket读/写的工作方式就是你选择的(tcp/udp). 正常来说"搞"socket分成以下几步:

  • 服务端监听:

    • 首先你要绑定(bind)这个端口: net.Liten/ListenPacket

    • 然后你接受(Accept)来访的链接: conn = listener.Accept

    • 然后你读取tcp字节流里的内容: io.Read

    • 然后把响应写到连接里去: io.Write

  • 客户端请求: 先net.Dial, 然后直接io.Write

端口

无论是tcp还是udp都是需要端口号才能工作的, 理论上你有65535个端口用, 但实际上0~1023被用作一些固定用途, 比如ssh, http等, 如果你尝试监听这些端口除非sudo否则不让你这么做. 而1024~49151就给服务端绑定, 剩下来49152到65535一般用于临时端口, 也就是客户端向服务端发起请求的时候用的

Last updated

Was this helpful?