社区
网络及通讯开发
帖子详情
请问Socket中控制端口与数据端口的区别,
iris_福将
2007-06-15 08:42:37
各位高手!
初编网络程序,遇到了麻烦,不知该如何解决.
我用ClientSocket控件,已知ip地址、控制端口号=5000、用户名和口令,连接到服务器后,服务器端发送8002为数据端口,通知我连接到数据端口,我不知该如何连?
帮帮我!
...全文
351
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
编程基础,涵盖套接字类型(STREAM/DGRAM/RAW)、
端口
机制、TCP三次握手与四次挥手、UDP特性及二者关键
区别
;详述
socket
缓冲区(send/recv queue)、阻塞/非阻塞行为、线程安全性(TCP流式 vs UDP
数据
报)、Keep-Alive与Nagle算法,并介绍Wireshark抓包过滤技巧,聚焦网络通信三要素(IP、
端口
、协议)及其在C#和Linux环境下的底层实现。
使用
SOCKET
通信实现 FTP 客户端程序
本文详细介绍了FTP协议的特点及工作原理,包括命令
端口
和
数据
端口
的作用,主动模式与被动模式的
区别
,以及如何通过
Socket
编程实现FTP客户端上传下载文件的功能。通过示例代码展示了如何与FTP服务器建立连接、登录、进入被动模式、下载和上传文件的过程,并讨论了断点续传的实现。
关于c语言实现ftp前置的分享
本文详细介绍了FTP协议的工作机制,包括主动模式和被动模式的
区别
,以及如何在Linux上搭建FTP服务器。通过理解
控制
端口
和
数据
端口
的作用,读者可以深入掌握FTP的
数据
传输过程。
【Linux网络】
Socket
编程预备
本文深入讲解
Socket
编程前的必备网络知识,涵盖IP地址与
端口
号的作用、
端口
号与进程ID的
区别
、源与目的
端口
的意义、TCP/UDP协议特性、网络字节序的重要性及sockaddr结构的应用,帮助理解网络通信
中
进程间
数据
传输的本质。
基于
socket
通信实现Ftp连接
本文深入解析FTP协议的工作原理,包括主动模式和被动模式的
区别
,以及如何使用C语言在LINUX平台上编写FTP客户端。涵盖主要FTP命令及响应码,适用于网络应用软件开发人员。
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章