//xBuffer:=Socket.ReceiveText;
//LOGIN_BUFFER:=StrLCopy(nBuffer, PChar(xBuffer),6); LOGIN_BUFFER 似乎不能和xBuffer 共存~ 获取的值老是错误的
所以判断不出包~ 大家帮忙修一修!或者提出其他方法例如Stream什么的 小弟谢了先!
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
IP_ADDRESS,
LOGIN_BUFFER,
xBuffer:String;
vBuffer: array[0..255] of Char;
nBuffer: array[0..255] of Char
Begin
IP_ADDRESS:=Socket.RemoteAddress + ':' +InttoStr(Socket.RemotePort)+' ';IF (Socket.ReceiveLength=32) then
//如果接受的包长度为32 则
Begin
xBuffer:=Socket.ReceiveText;
//定义 xBuffer = Socket.ReceiveText
LOGIN_BUFFER:=StrLCopy(nBuffer, PChar(xBuffer),6);
//定义 LOGIN_BUFFER = 从接受到的数据包中获取第六个字符HEX类型
Memo1.Lines.Add(IP_ADDRESS + 'Connect.');
//Memo1递增一条客户连接记录
End
ELSE
IF Socket.ReceiveLength=64 Then
//如果接受的长度=64 则
Begin
IF Copy(PCHAR(xBuffer),6,6) = LOGIN_BUFFER then
//如果从xBuffer中复制出的第6个字符 等于 LOGIN_BUFFER 则
Begin
Memo1.Lines.Add(IP_ADDRESS + 'Login.');
//Memo1递增一条客户登陆记录
EndElse
IF Copy(PCHAR(xBuffer),6,6) <> LOGIN_BUFFER then
//如果从xBuffer中复制出的第6个字符 不等于 LOGIN_BUFFER 则
Begin
Memo1.Lines.Add(IP_ADDRESS + 'Open.');
//Memo1递增一条客户开启记录
EndELSE
Begin
Memo1.Lines.Add(IP_ADDRESS +'Error RECV Packet.');
//异常错误记录
End
End;
end;
//LOGIN_BUFFER:=StrLCopy(nBuffer, PChar(xBuffer),6); LOGIN_BUFFER 似乎不能和xBuffer 共存~ 获取的值老是错误的
所以判断不出包~ 大家帮忙修一修!或者提出其他方法例如Stream什么的 小弟谢了先!
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
IP_ADDRESS,
LOGIN_BUFFER,
xBuffer:String;
vBuffer: array[0..255] of Char;
nBuffer: array[0..255] of Char
Begin
IP_ADDRESS:=Socket.RemoteAddress + ':' +InttoStr(Socket.RemotePort)+' ';IF (Socket.ReceiveLength=32) then
//如果接受的包长度为32 则
Begin
xBuffer:=Socket.ReceiveText;
//定义 xBuffer = Socket.ReceiveText
LOGIN_BUFFER:=StrLCopy(nBuffer, PChar(xBuffer),6);
//定义 LOGIN_BUFFER = 从接受到的数据包中获取第六个字符HEX类型
Memo1.Lines.Add(IP_ADDRESS + 'Connect.');
//Memo1递增一条客户连接记录
End
ELSE
IF Socket.ReceiveLength=64 Then
//如果接受的长度=64 则
Begin
IF Copy(PCHAR(xBuffer),6,6) = LOGIN_BUFFER then
//如果从xBuffer中复制出的第6个字符 等于 LOGIN_BUFFER 则
Begin
Memo1.Lines.Add(IP_ADDRESS + 'Login.');
//Memo1递增一条客户登陆记录
EndElse
IF Copy(PCHAR(xBuffer),6,6) <> LOGIN_BUFFER then
//如果从xBuffer中复制出的第6个字符 不等于 LOGIN_BUFFER 则
Begin
Memo1.Lines.Add(IP_ADDRESS + 'Open.');
//Memo1递增一条客户开启记录
EndELSE
Begin
Memo1.Lines.Add(IP_ADDRESS +'Error RECV Packet.');
//异常错误记录
End
End;
end;
解决方案 »
- 我数学不好,学编程感觉没信心
- delphi7中怎样写入注册表的“(默认)”一值?
- 请问数据库的窗口和表单要添什么样的代码才能连上
- Rave在Execute之后怎么出来一个英文的界面啊?怎么办?
- 用流拷贝文件的默认拷贝单元是多少字节?
- 关于installshield6.22的小问题
- 请推荐一个读写xls文件的好控件,谢谢
- 转让:超市POS收银系统,支持条形码扫描、票据打印 (含完整Delphi源代码、正式版程序、使用文档和技术支持)
- PCM声音文件如何在程序里播放?100分
- 应该很简单的问题,下载网页存到磁盘?
- pascal中有没有左移位的?
- createwindow出的edit不能获得tab键的困惑
跟踪一下看xBuffer字符串是什么