菜鸟法文 简单文本信息传输问题

sumire02 2007-04-02 04:31:39
我用TClientSocket和TserverSocket做了一个简单的通讯器
让服务器端接受客户端信息 并显示出来 可是运行的时候总是无法显示出来
具体代码如下:
已经确定网络连接成功
void __fastcall TForm2::Button1Click(TObject *Sender)
{

ClientSocket1->Socket->SendText("TryLogin");
ClientSocket1->Socket->ReceiveText();
ClientSocket1->Socket->SendText(UserName);
ClientSocket1->Socket->ReceiveText();
ClientSocket1->Socket->SendText(UserPassword);
ClientSocket1->Socket->ReceiveText();
ClientSocket1->Socket->SendText("End");
ClientSocket1->Socket->ReceiveText();
}

服务器端接受代码:
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
if(!(ServerSocket1->Socket->ReceiveText()=="End"))
Memo1->Lines->Add(Socket->ReceiveText());

}运行的时候 Memo1还是空空白白!
请赐教
...全文
307 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Y___Y 2007-04-20
  • 打赏
  • 举报
回复
应该是ls说的
你的数据接收,应该放到read事件才行
wyb_45 2007-04-20
  • 打赏
  • 举报
回复
你的逻辑就不对
接收数据包是在控件的read事件里。
而且发出数据包最好判断发出的数据长度是否等于想要发出数据包的长度,如果不一致,说明丢包了。发送的数据包最后<2038byte
痞子酷 2007-04-18
  • 打赏
  • 举报
回复
if(!(ServerSocket1->Socket->ReceiveText()=="End")) 、、有问题呀
Memo1->Lines->Add(Socket->ReceiveText());

呵呵~~~
SOCKET可能将数据组合啦。End字符串前有以前发送的数据。
应改改
tuhuo 2007-04-05
  • 打赏
  • 举报
回复
你在ClientRead里边设个断点调试一下哈,看看到底有没有收到数据
sumire02 2007-04-03
  • 打赏
  • 举报
回复
楼上说的我试过了
还是不行 我还尝试过用AnsiString 接受Socket->ReceiveText()
都不行

To:huzhangyou
我听取你的意见 把if(!(ServerSocket1->Socket->ReceiveText()=="End"))删了 但是还是没有显示出任何信息
希再赐教

huzhangyou 2007-04-03
  • 打赏
  • 举报
回复
应该是这样
String s = ServerSocket1->Socket->ReceiveText();
if(s != "End"){
Memo1->Lines->Add(s);
}
huzhangyou 2007-04-03
  • 打赏
  • 举报
回复
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
if(!(ServerSocket1->Socket->ReceiveText()=="End"))
Memo1->Lines->Add(Socket->ReceiveText());

}运行的时候 Memo1还是空空白白!
请赐教

你的逻辑错误了
再分析一下
而且你连续Receive两次数据了
明显是不对的
cheneyhehe 2007-04-02
  • 打赏
  • 举报
回复
看不懂,帮顶

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧