一段telnet程序,取路由器的ARP表,下面是接收的时候:...
while true do
begin
buffer:='';
len:=recv(socket,buffer,sizeof(buffer),0);
if len=socket_error then
break;
arp:=arp+copy(buffer,1,len);
form1.memo1.lines.add(inttostr(len)+'BYTE');
form1.memo1.lines.add(copy(buffer,1,len));
...
根据接收到的数据判断,是否已经取完
if 取完 then break;
end; 收的过程中偶尔会出问题,有时写入buffer的字节数少于len,造成循环无法结束。甚至一个都没有,执行的效果如下:
542BYTE:
192.168.9.34 00-21-97-0e-a4-5e dynamic 9
192.168.9.36 00-e0-4c-39-18-93 dynamic 9
192.168.9.38 00-e0-2a-0a-02-73 dynamic 9
192.168.9.39 00-14-2a-f0-94-d4 dynamic 9
192.168.9.44 00-e7-00-43-3f-93 dynamic 9
192.168.9.45 00-21-97-08-bf-69 dynamic 9
192.168.9.48 00-14-0b-4a-4b-9d dynamic 9
192.168.9.60 00-13-20-2c-63-87 dynamic 9
192.168.9.63 00-1d-0f-15-63-64 dynamic 9511BYTE:
192.168.9.64 00-e0-28-08-01-eb dynamic 9
192.168.9.65 00-15-58-02-5a-26 dynamic 9
192.168.9.67 00-21-97-10-20-dd dynamic 9
192.168.9.68 00-e0-2b-0b-02-d4 dynamic 9
192.168.9.70 00-21-97-0c-92-7f dynamic 9
192.168.9.73 00-15-f2-60-7d-03 dynamic 9
192.168.9.74 00-14-2a-f0-98-a4 dynamic 9
192.168.9.83 00-21-97-10-25-65 dynamic 9
192.168.9.84 00-1b-fc-4b-60-87 dynamic 9
298BYTE:
(这里为什么recv明明返回298可是buffer却是空的????????????)
while true do
begin
buffer:='';
len:=recv(socket,buffer,sizeof(buffer),0);
if len=socket_error then
break;
arp:=arp+copy(buffer,1,len);
form1.memo1.lines.add(inttostr(len)+'BYTE');
form1.memo1.lines.add(copy(buffer,1,len));
...
根据接收到的数据判断,是否已经取完
if 取完 then break;
end; 收的过程中偶尔会出问题,有时写入buffer的字节数少于len,造成循环无法结束。甚至一个都没有,执行的效果如下:
542BYTE:
192.168.9.34 00-21-97-0e-a4-5e dynamic 9
192.168.9.36 00-e0-4c-39-18-93 dynamic 9
192.168.9.38 00-e0-2a-0a-02-73 dynamic 9
192.168.9.39 00-14-2a-f0-94-d4 dynamic 9
192.168.9.44 00-e7-00-43-3f-93 dynamic 9
192.168.9.45 00-21-97-08-bf-69 dynamic 9
192.168.9.48 00-14-0b-4a-4b-9d dynamic 9
192.168.9.60 00-13-20-2c-63-87 dynamic 9
192.168.9.63 00-1d-0f-15-63-64 dynamic 9511BYTE:
192.168.9.64 00-e0-28-08-01-eb dynamic 9
192.168.9.65 00-15-58-02-5a-26 dynamic 9
192.168.9.67 00-21-97-10-20-dd dynamic 9
192.168.9.68 00-e0-2b-0b-02-d4 dynamic 9
192.168.9.70 00-21-97-0c-92-7f dynamic 9
192.168.9.73 00-15-f2-60-7d-03 dynamic 9
192.168.9.74 00-14-2a-f0-98-a4 dynamic 9
192.168.9.83 00-21-97-10-25-65 dynamic 9
192.168.9.84 00-1b-fc-4b-60-87 dynamic 9
298BYTE:
(这里为什么recv明明返回298可是buffer却是空的????????????)
解决方案 »
- dephi查询PostgreSQL数据库到表格中中文显示乱码
- 关于TDrawGrid中Hint的问题!高手指教
- 千禧报表控件怎么合并单元格???
- 不同服务器登录,如何办?
- 如何窗体在最上层,并且又能盖住qq的登陆注册框:在线等候解决即给分
- 哪里有DELPHI6的安装盘下载,大家帮忙推荐一下,多谢
- stringgrid中的cells属性的作用是什么
- 注册表问题,高手请进。我给200分
- 简单,edit 的 text 不是数字就清成0重输。1000分!!!
- 在DELPHI中调用函数时如何传递多维数组?????
- 哪位前辈在深圳乐思软件工作过的,那家公司怎么样????
- 如何用语句创建sql 数据库别名????????????
用CopyMemory(.....
也没用,说明recv(socket,buffer,sizeof(buffer),0)这里就出了问题,buffer是char类型数组,我应该用什么类型的呢?
这样要buffer里都是可视字符才能显示完整,否则碰到#0就会断开串。无论定义成什么,不能直接Lines.Add(buffer);buffer:Array[0..2048] of Byte;