一端口连接多个服务器? 平时我用TCP编程时, 一般都是服务器端设置一个端口, 而客户端用随机端口连接服务器,但是在FTP协议定义中, 数据连接默认端口20是作为客户端连接, 怎么同时连接多个服务器? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 怎么没有人能帮忙? 我监视了Serv U程序, 能用20端口同时连接两个服务器 不是用20端口作为服务器, FTP协议中规定是作为客户端, 我测试过SERV U 程序能用20端口同时连接多个服务器, 网上许多FTP SERVER原码都是用多个随机端口代替20端口 没有高手能解决?有没有编过FTP SERVER程序的人? 如果不用端口20, 那就不符合FTP标准了, 并且如果很多用户同时下载文件, 就会把端口用完 20,21是监听的端口传输会新建一个socket进行 同意楼上,20是服务器的listen端口,不是客户端的。 如果没有看FTP协议, 就不要乱发表意见, 20不是listen端口, 而是客户端连接端口, 我已经测试过SERV U 和微软自带的FTP服务器 20是在FTP服务器上作为客户端口 连接FTP客户端的服务器, FTP客户端发PORT命令告诉FTP服务器连接那个端口 有人说IOCP可以一端连接多端口, 我对IOCP不熟悉, 有那位能帮我解释? 20是在FTP服务器上作为客户端口 连接FTP客户端的服务器, FTP客户端发PORT命令告诉FTP服务器连接那个端口-----------------------------------------------------请LZ释疑:1、FTP客户端通过21端口连接服务器。2、客户端发PORT命令告诉FTP服务器连接20端口问题:1、这个20端口是哪个程序的端口,客户端的,服务器程序的?2、服务器接到PORT命令后的处理:是连接客户端的20端口,还是在20端口监听接受客户端的连接?还是按我对LZ的描述的理解,一种匪夷所思的连接方式:服务器程序通过20端口连接客户端,即反向连接,connect不需要指定对方端口,只指定自己的端口。 我介绍一下FTP文件传送的机制, FTP文件传有主动和被动两种方式. 先介绍主动方式:(1)客户端要下载或上传文件(2)客户端建立一个TCP侦听Socket(3)客户端发送PORT命令告诉服务器要连接的IP地址和端口, 这有个好处是可以使服务器和其他任意机器传送文件(4)服务端用20端口连接客户端侦听Socket(5)连接后传送文件(6)传送完后,服务器端关闭连接(20端口)我要问的问题是服务器这个端口怎么同时连接多个客户端的侦听Socket, 我测试过, Serv U和微软都可以同时连接现在介始被动方式:(1)客户端要下载或上传文件(2)客户端发命令PASV给服务器(3)服务器用随机端口(我测试Serv U, 不是20)建立侦听DataSocket, 返回端口给客户端, 等待客户端连接(4)客户端连接服务器DataSocket(5)连接成功, 传送文件(6)传送完文件,客户端关闭连接 传统的ftp分配TCP端口20为数据端口,但现代的FTP,基本都不遵从这一标准,数据端口都是随机分配的,用完后就关闭. 主动方式还是服务器连接客户端20端口喽?连接多个IP地址的20端口不行吗?创建n个SOCKET,connect多个IP地址的20端口是可以的啊。 ringphone讲可以连接多个端口, 连接一个服务器后, 再连接其他服务器时CAsyncSocket会报错你怎么连? 如果不用20端口, 就要考虑穿透防火墙的问题了, 很多服务器都关闭非公共端口 21端口是命令端口,传输命令和结果,例如list的结果.而20则是传输数据的端口,例如ftp传送个文件时. 在无连接套接字上接收(发送)数据的另一种方法是建立连接。听起来有些奇怪吧,但事实的确如此。无连接的套接字一旦建立,便可利用SOCKADDR参数(它被设为准备与之通信的远程接收端地址,recvfrom中获得)调用connect或WSAConnect。但事实上并没有建立连接。投入连接函数的套接字地址是与套接字关联在一起的,如此一来,才能够用Recv和WSARecv来代替recvfrom和WSARecvFrom。为什么呢?其原因是数据的始发处是已知的。如果在一次应用中,只和一个端点进行通信,便能很容易地与数据报套接字建立连接。 我用的都是自己写的SOCKET类,没用过CAsyncSocket,不知道CAsyncSocket不能连同端口的多服务器。但是多线程,每个线程创建1个SOCKET,connect多个IP地址的20端口是可以的。DWORD SocketThreadProc(LPVOID){ SOCKET sock = INVALID_SOCKET; struct sockaddr_in sin_addr; sin_addr.sin_family = AF_INET; sin_addr.sin_addr.s_addr = inet_addr("/*不同的IP地址*/"); sin_addr.sin_port = htons((u_short)20); if((sock = socket(AF_INET,SOCK_STREAM,0)) == INVALID_SOCKET) { //显示出错信息 ... } else { if(connect(sock,(struct sockaddr*)&sin_addr;sizeof(sin_addr)) == SOCKET_ERROR) { int res = WSAGetLastError(); //出错处理 } ... } return 0;}connect多个服务器是成功的。 ringphone没有理解我的问题,我问的是1个IP的20端口,连接多个服务器,不是1个IP连接多个服务器的20端口,我将试试kitigesh的回答,数据报调用connect, 服务器端有没有Accept? 如果真不行,是不是要用IP协议实现TCP协议, 编个能多连接的客户端? 不好意思,这下真不懂了,通过20端口连接服务器,connect可以指定自己的端口?可以给个例子吗?学习。 create时指定20端口,不是connect时指定 我已经知道怎么解决了, 用SetSockOpt(SO_REUSEADDR)解决 关于用WM_SETTEXT设置EDIT控件文本的问题 VC从数据库里读出的image是字节流,怎么在对话框上恢复成图片呢? 关于如何向classwizard的数据库中添加类 请教一个很菜的问题,在VC++6.0中如何改变Dialog和控件的颜色? 如何编程实现检测网络带宽? [散分]升三角 10楼一人得一半 其他均分 求 求 求 求 各位前辈! 请教个16进制转换的问题 有关vc设置的小问题,请执教! MFC如何把多文档改为单文档 熟悉换肤技术的朋友请进...... 有没有办法显示一个灰度级别大于256的图。
-----------------------------------------------------
请LZ释疑:
1、FTP客户端通过21端口连接服务器。
2、客户端发PORT命令告诉FTP服务器连接20端口
问题:
1、这个20端口是哪个程序的端口,客户端的,服务器程序的?
2、服务器接到PORT命令后的处理:是连接客户端的20端口,还是在20端口监听接受客户端的连接?还是按我对LZ的描述的理解,一种匪夷所思的连接方式:服务器程序通过20端口连接客户端,即反向连接,connect不需要指定对方端口,只指定自己的端口。
先介绍主动方式:
(1)客户端要下载或上传文件
(2)客户端建立一个TCP侦听Socket
(3)客户端发送PORT命令告诉服务器要连接的IP地址和端口, 这有个好处是可以使服务器和其他任意机器传送文件
(4)服务端用20端口连接客户端侦听Socket
(5)连接后传送文件
(6)传送完后,服务器端关闭连接(20端口)
我要问的问题是服务器这个端口怎么同时连接多个客户端的侦听Socket, 我测试过, Serv U和微软都可以同时连接现在介始被动方式:
(1)客户端要下载或上传文件
(2)客户端发命令PASV给服务器
(3)服务器用随机端口(我测试Serv U, 不是20)建立侦听DataSocket, 返回端口给客户端, 等待客户端连接
(4)客户端连接服务器DataSocket
(5)连接成功, 传送文件
(6)传送完文件,客户端关闭连接
你怎么连?
如果不用20端口, 就要考虑穿透防火墙的问题了, 很多服务器都关闭非公共端口
DWORD SocketThreadProc(LPVOID)
{
SOCKET sock = INVALID_SOCKET;
struct sockaddr_in sin_addr;
sin_addr.sin_family = AF_INET;
sin_addr.sin_addr.s_addr = inet_addr("/*不同的IP地址*/");
sin_addr.sin_port = htons((u_short)20); if((sock = socket(AF_INET,SOCK_STREAM,0)) == INVALID_SOCKET)
{
//显示出错信息
...
}
else
{
if(connect(sock,(struct sockaddr*)&sin_addr;sizeof(sin_addr)) == SOCKET_ERROR)
{
int res = WSAGetLastError();
//出错处理
}
...
}
return 0;
}
connect多个服务器是成功的。