社区
网络及通讯开发
帖子详情
请问Socket中控制端口与数据端口的区别,
iris_福将
2007-06-15 08:42:37
各位高手!
初编网络程序,遇到了麻烦,不知该如何解决.
我用ClientSocket控件,已知ip地址、控制端口号=5000、用户名和口令,连接到服务器后,服务器端发送8002为数据端口,通知我连接到数据端口,我不知该如何连?
帮帮我!
...全文
353
2
打赏
收藏
请问Socket中控制端口与数据端口的区别,
各位高手! 初编网络程序,遇到了麻烦,不知该如何解决. 我用ClientSocket控件,已知ip地址、控制端口号=5000、用户名和口令,连接到服务器后,服务器端发送8002为数据端口,通知我连接到数据端口,我不知该如何连? 帮帮我!
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
iris_福将
2007-08-05
打赏
举报
回复
我没有弄懂的是:5000为控制端口,服务器端数据口为8002,它们是什么关系?我的连接方法对吗?
void __fastcall TForm1::connectClick(TObject *Sender)
{
char tmp[20];
Form2->ShowModal();
strcpy(hostname,Form2->ComboBox1->Text.c_str());
strcpy(portserv,Form2->portN->Text.c_str());
if (ClientSocket1->Active)
{
ClientSocket1->Active = false;
}
ClientSocket1->Host= hostname;
ClientSocket1->Port=atoi(portserv);
ClientSocket1->Active = true;
char *buf=(char *)malloc(ClientSocket1->Socket->ReceiveLength()+1);
memset(buf,0x00,ClientSocket1->Socket->ReceiveLength()+1);
ClientSocket1->Socket->ReceiveBuf(buf,ClientSocket1->Socket->ReceiveLength()+1); //接收 "100 connection accepted login:\r\n"
strcpy(tmp,Form2->userN->Text.c_str()); //user name
strcat(tmp,"\r\n");
ClientSocket1->Socket->SendBuf(tmp,strlen(tmp)); //发送 用户名
Memo1->Lines->Add(buf);
::Sleep(200);
memset(buf,0x00,ClientSocket1->Socket->ReceiveLength()+1);
ClientSocket1->Socket->ReceiveBuf(buf,ClientSocket1->Socket->ReceiveLength()+1); //接收 "102 password for:\r\n"
strcpy(tmp,Form2->passW->Text.c_str()); //pass word
strcat(tmp,"\r\n");
ClientSocket1->Socket->SendBuf(tmp,strlen(tmp));//发送 口令
Memo1->Lines->Add(buf);
memset(buf,0x00,ClientSocket1->Socket->ReceiveLength()+1);
::Sleep(200);
ClientSocket1->Socket->ReceiveBuf(buf,ClientSocket1->Socket->ReceiveLength()+1); //接收 "107 check passed to create data link.\r\n
//Memo1->Lines->Add(buf);
sscanf(buf,"%3s",tmp);
if(strcmp(tmp,"107")!=0)
goto lab1;
strcpy(tmp,Form2->portN->Text.c_str());
strcat(tmp,"\r\n");
::Sleep(200);
ClientSocket1->Socket->SendBuf(tmp,strlen(tmp));
memset(buf,0x00,ClientSocket1->Socket->ReceiveLength()+1);
::Sleep(200);
ClientSocket1->Socket->ReceiveBuf(buf,ClientSocket1->Socket->ReceiveLength()+1); //接收 "108 8002 is data port.\r\n"
//以上步骤接发都正确,再往下还需要再连到数据端口8002?我不知该怎样做了。
::Sleep(200);
memset(buf,0x00,ClientSocket1->Socket->ReceiveLength()+1);
::Sleep(200);
ClientSocket1->Socket->ReceiveBuf(buf,1200);
}
Y___Y
2007-06-15
打赏
举报
回复
一般搞一个端口进行通讯就可以了
非要搞两个就用两个ClientSocket对象
Socket
编程概念
一:什么是
SOCKET
socket
的英文原义是“孔”或“插座”。作为进程通信机制,取后一种意思。通常也称作“套接字”,用于描述IP地址和
端口
,是一个通信链的句柄(其实就是两个程序通信用的)。
socket
非常类似于电话插座。以一个电话网为例:电话的通话双方相当于相互通信的2个程序,电话号码就是ip地址。任何用户在通话之前,首先要占有一部电话机,相当于申请一个
socket
;同时要知道对方的号码,相当于对方有一个固定的
socket
。然后向对方拨号呼叫,相当于发出连接请求。对方假如在场并空闲,拿起电话话筒,双
使用
SOCKET
通信实现 FTP 客户端程序
FTP 协议 相比其他协议,如 HTTP 协议,FTP 协议要复杂一些。与一般的 C/S 应用不同点在于一般的C/S 应用程序一般只会建立一个
Socket
连接,这个连接同时处理服务器端和客户端的连接命令和
数据
传输。而FTP协议
中
将命令与
数据
分开传送的方法提高了效率。 FTP 使用 2 个
端口
,一个
数据
端口
和一个命令
端口
(也叫做
控制
端口
)。这两个
端口
一般是21 (命令
端口
)和 20
关于c语言实现ftp前置的分享
在搭建ftp服务器之前,我们需要先了解一下,ftp具体是个什么。 ftp协议 与一般的C/S应用(客户端/服务器应用)不同在于FTP不在一个
Socket
连接里同时处理服务器端和客户端的连接命令和
数据
传输,而FTP协议
中
将命令与
数据
分开传送的方法提高了效率。 它有两个
端口
:
控制
端口
:
控制
Socket
用来传送命令。
数据
端口
:
数据
Socket
是用于传送
数据
。 两个可选择模式: 主动模式 (PORT) 主动模式下,客户端随机打开一个大于 1024 的
端口
向服务器的命令
端口
P,即 21
端口
,发起连接,
【Linux网络】
Socket
编程预备
本文介绍了
Socket
编程前需要掌握的基础概念。首先说明IP地址标识主机唯一性,但
数据
最终需要交付给进程,因此引入
端口
号来标识进程。
端口
号范围划分为知名
端口
号(0-1023)和动态分配
端口
号(1024-65535)。文章解释了
端口
号与进程ID的
区别
,并通过10086客服热线的比喻帮助理解。随后介绍了
socket
概念,即IP+Port的组合,用于标识互联网
中
的唯一进程。传输层的TCP和UDP协议分别是有连接可靠传输和面向
数据
报的无连接协议。最后讲解了网络字节序的概念及其转换函数,确保不同主机间的
数据
正确传输。
基于
socket
通信实现Ftp连接
FTP 概述 文件传输协议(FTP)作为网络共享文件的传输协议,在网络应用软件
中
具有广泛的应用。FTP的目标是提高文件的共享性和可靠高效地传送
数据
。 在传输文件时,FTP 客户端程序先与服务器建立连接,然后向服务器发送命令。服务器收到命令后给予响应,并执行命令。FTP 协议与操作系统无关,任何操作系统上的程序只要符合 FTP 协议,就可以相互传输
数据
。本文主要基于 LINUX 平台,对 FTP 客户端的实现原理进行详尽的解释并阐述如何使用 C 语言编写一个简单的 FTP 客户端。 FTP 协议 相比
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章