现在我用clientsocket和serversocket用来传输数据
当我传上去的数据在服务段处理正确时,服务端发一个(如'1')给客户端 ServerSocket.Socket.Connections[0].SendText(messageok);
客户端接受,在clientsocket的onread事件里去读,如readreturnmessage:=socket.ReceiveText;
客户端再根据这个指令来判断来显示不同的消息。如‘成功处理’,‘处理不成功’
当好想有时接受的指令是对的,但有时接受的有时是不对的.
当一直是‘成功处理’时,这是系统是没错,但是当‘处理不成功‘后,
再去做本应是成功处理的数据。但系统返回还是'处理不成功'但实际上数据
处理是正确的。要等下一次再在前台再传送数据给服务端后,这才显示正常
这是为何,
当我传上去的数据在服务段处理正确时,服务端发一个(如'1')给客户端 ServerSocket.Socket.Connections[0].SendText(messageok);
客户端接受,在clientsocket的onread事件里去读,如readreturnmessage:=socket.ReceiveText;
客户端再根据这个指令来判断来显示不同的消息。如‘成功处理’,‘处理不成功’
当好想有时接受的指令是对的,但有时接受的有时是不对的.
当一直是‘成功处理’时,这是系统是没错,但是当‘处理不成功‘后,
再去做本应是成功处理的数据。但系统返回还是'处理不成功'但实际上数据
处理是正确的。要等下一次再在前台再传送数据给服务端后,这才显示正常
这是为何,
解决方案 »
- 刚安装好DELPHI 8,不知道从何下手
- 谁说说关于本地数据库的全文检索的思路,或介绍介绍资料?
- (高分求助,不够再加)程序结束时出现EInvalidPointer异常
- 一个超级弱智的问题
- 现在花时间研究COM+/DCOM还有没有价值???
- 有谁看过这个报错?
- 调用拨号函数rasdial时总是提示 ‘hrasconn’类型找不到。要use 哪个pas呢?谁知道,我的所有可用分马上派给你。在线等待,急
- 如何让窗口最大化按扭变灰?
- 问一个关于ADO的问题,急
- 数据库一个字段 我定义成 float 类型 怎么 输入的小数后总给我保留出一长串小数
- 该怎样设置QRDBText呢?分不够可再给
- 能帮我吗?
在socket接口收到的有可能不是完整桢,
特别是较大的桢或者发的特别快,需在应用层加桢头判定
是否是完整桢,这是许多TCP初学者最常范的错误。但是
从你的描述看好像服务器发给客户端的桢并
不大,如果不是上述原因,那一定是应用层处理
机制有问题,你再仔细查查
我一般使用这两个控件提供的方法创建/关闭联接(或者监听端口),以避免直接使用WIndows api的麻烦,然后直接使用他的Socket成员对象,利用read/write做同步的读写操作,这样做好像没什么问题发生,操作都挺正常的。(或者使用TWinsocketStream来读写)
问题的描述让人看的头晕,在 TCP 协议下接收数据应该使用边界定义符号来判断接收的数据为何条 Send 命令发送的数据,一般应用协议都是使用 #13#10 符号为数据流的边界定义符号。例如在 OnRead 事件中使用以下代码 nReceived := Socket.ReceiveBuf(Buffer, sizeof(Buffer));
if nReceived > 0 then
begin
//判断是否接收完毕本次请求
if (Buffer[nReceived - 2] = #13) and (Buffer[nReceived - 1] = #10) then
Socket.Close;
end; 一般情况下服务器的接收和发送命令要和客户端的发送和接收命令一一对应,这样就不会有问题啦,及客户端发送一条命令 Send(‘List'), 服务器端就使用 接收命令接收,接收处理完毕后在发送处理结果给客户端!这个就是一个协议的处理过程
服务端端处理后,发socket.sendtext('ok'),但有时好象收到的不准,
我用了
while mess='' do
begin
socket.receivetext;
end
一直收,以前是由于服务端还没返回,而客户端已socket.receivetext了
所以,
这样解释对吗
比较简单的就是在所有的事件里showmessage();这样你就会弄清楚他们的关系了好久没搞了,都忘了