有关用socket进行进程通信,客户端端口号的有关问题

有关用socket进行进程通信,客户端端口号的问题。
对于用socket进行通信的客户端和服务器进程而言,是不是每次从客户端发起的连接的端口号都是不同的,看到书上说这个端口号是由操作系统随机分配的,那么是不是不会重复的,
另外还有能自己指定从客户端发起的连接时用的端口号吗?

------解决方案--------------------
探讨

引用:
客户端要是没调用bind或bind端口设置为0
则connect时,系统自动选择一个没有占用的临时端口

谢谢~ 但是这个已经占用的端口到什么时候结束占用呢?