客户机首先用一个套接字 socketa去连接主机的一个端口,这个端口由监听套接字serversocketa负责监听,然后同一客户机用另外一个套接字socketb去连接主机的另外一个端口,这个端口由监听套接字serversocketb负责监听。
现在的问题是 怎么判断连接进来的这两个套接字都是由同一个主机发送的?我知道用getpeername可以得到连接进来的套接字的地址,包括ip地址和端口。但使用这种方法得到的两个地址显然是ip地址相同而端口号不同,但是仅通过ip地址相同好像还不能判断是否是同一个主机发过来的。因为如果有NAT转换,那么同一局域网下发过来的连接应该都是IP地址相同。所以我的问题就是怎么判断两个套接字连接是否来自同一主机?其实我的问题的原因是我要做FTP服务器,做过FTP服务器下载的都知道,下载一个东西需要两个连接,控制连接和数据连接,所以我就是想问这两个连接怎么判断是否是同一主机发送过来的?
现在的问题是 怎么判断连接进来的这两个套接字都是由同一个主机发送的?我知道用getpeername可以得到连接进来的套接字的地址,包括ip地址和端口。但使用这种方法得到的两个地址显然是ip地址相同而端口号不同,但是仅通过ip地址相同好像还不能判断是否是同一个主机发过来的。因为如果有NAT转换,那么同一局域网下发过来的连接应该都是IP地址相同。所以我的问题就是怎么判断两个套接字连接是否来自同一主机?其实我的问题的原因是我要做FTP服务器,做过FTP服务器下载的都知道,下载一个东西需要两个连接,控制连接和数据连接,所以我就是想问这两个连接怎么判断是否是同一主机发送过来的?
用户登录FTP服务器后发送自己的相关信息 比如用户ID不就
OK了么?
这个IP应该是局域网NAT转化后的IP吧,好像不能判断是不是一个主机吧
客户端先连接FTP,建立后客户端建立一个监听Socket,并告知FTP,由FTP来连接客户端并发送数据就可以了
呵呵,被动模式好像不是这个意思吧,被动模式应该是控制连接发命令后,FTP服务器将另外一个端口发给客户端,然后由客户端新建一个数据连接去连接这个监听。您说的更像是主动连接吧。
大家好像都没有明白我的意思,我的问题的意思是 判断两个不同套接连接是否来自同一主机呵呵,查看MAC的方法应该行,可是怎么实现?这应该是最底层的协议了。把自己内网的IP发送给服务器也可以把。不过现在我还是觉得换一种方法把。