简单说:服务端socket初始化后调用accept()方法进行阻塞等待,客户端socket初始化完成后调用connect方法进行连接,连接成功后就可以通信了。
教科书:

Socket通信原理: 
服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束。

类似于打电话:
A给B打电话,拨号等待接听,B接听,OK开始通信