建立tcp 连接通常的做法是:server端创建server socket之后listen;client端创建client socket之后向server发起connect请求;server accept连接请求,新建一个client socket,就建立了和对方的一个连接。
但实践中发现另一种做法可以不需要server:两端分别创建client socket,先后向对方发起connect请求,通常一轮下来就能建立连接。这在windows和linux分别经过验证,但原理不清楚。这种做法的前提当然是分别知道对方的ip:port,好处是省去了server socket,整个过程有点类似于udp通信。目前没有从理论上弄明白为什么这样也能建立tcp连接。
欢迎感兴趣的朋友予以分析和解答,谢谢。