Client先发送消息,然后Server再打开,然后再发送消息,Server就收不到消息。。
Client先发送消息,然后Server再打开,然后再发送消息,Server就收不到消息。。
这是为什么?
如果先开Server没问题。
clinet
ClientSocket1-> Address= "192.168.1.1 ";
ClientSocket1-> Port=7000;
ClientSocket1-> Active=true;
ClientSocket1-> Socket-> Connect(0);
ClientSocket1-> Socket-> SendText(msg);
ClientSocket1-> Socket-> Close();
server
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
AnsiString msg=Socket-> ReceiveText();
Memo1-> Lines-> Add(msg);
}
[解决办法]
clinet
ClientSocket1-> Address= "192.168.1.1 ";
ClientSocket1-> Port=7000;
ClientSocket1-> Active=false;
ClientSocket1-> Active=true;
ClientSocket1-> Socket-> SendText(msg);
[解决办法]
1 server没有启动,client发送消息 应该会出现 "目标积极拒绝 "这样的异常
2 server如果比client后启动的话,client应该重新将active属性设置为true才行
3 很显然对于网络连接是否成功需要用异常来处理。
4 用时间来衡量,必须有一个超时判断.比如你放一个timer,每隔段5秒就尝试连接以下server
超过5次 也就是25秒,可以认为要么服务器停止 要么网络是断开的