socket--插座,套接字
网络程序的的通讯成为一个程序的socket插座流入到另一个程序的socket插座
端口号与socket
比如ftp负责控制命令传输的端口21,有一个socket绑定到这个端口(记为sCtrlSocket),一直监听,一旦监听到有连接请求,就Socket tempSocket = sCtrlSocket.Accept();这个时候客户端上的一个socket(没有对应客户机上的一个端口)就与服务器上的tempSocket建立了一个链接,服务器上的tempSocket不是独占21端口而是通过21端口与客户端建立了一个传输通路,之后可以有许许多多与tempSocket一样的服务器上的socket去和发来连接请求的客户端socket建立链接.
tempSocket1,tempSocket2,tempSocket3...............工作起来之间当然不会出现混淆,因为他们都是通过自己的一个链路在传输着.
但是ftp的特殊在于除了控制命令传输还有数据的实际传输
设计时当然是一个tempSocket(控制命令传输用)对应一个线程,进入他的线程之后,如果需要数据传输,就在这个线程中:myDataSocket = sDataSocket.Accept();//sDataSocket是绑定到服务器上20端口的负责数据传输的,这样许多客户端之间就不会有干涉.
当然还要说PORT和PASV两种模式在程序中的实现..........(待续)
网络程序的的通讯成为一个程序的socket插座流入到另一个程序的socket插座
端口号与socket
比如ftp负责控制命令传输的端口21,有一个socket绑定到这个端口(记为sCtrlSocket),一直监听,一旦监听到有连接请求,就Socket tempSocket = sCtrlSocket.Accept();这个时候客户端上的一个socket(没有对应客户机上的一个端口)就与服务器上的tempSocket建立了一个链接,服务器上的tempSocket不是独占21端口而是通过21端口与客户端建立了一个传输通路,之后可以有许许多多与tempSocket一样的服务器上的socket去和发来连接请求的客户端socket建立链接.
tempSocket1,tempSocket2,tempSocket3...............工作起来之间当然不会出现混淆,因为他们都是通过自己的一个链路在传输着.
但是ftp的特殊在于除了控制命令传输还有数据的实际传输
设计时当然是一个tempSocket(控制命令传输用)对应一个线程,进入他的线程之后,如果需要数据传输,就在这个线程中:myDataSocket = sDataSocket.Accept();//sDataSocket是绑定到服务器上20端口的负责数据传输的,这样许多客户端之间就不会有干涉.
当然还要说PORT和PASV两种模式在程序中的实现..........(待续)