Chinaunix

标题: 请教关于perl下socket编程,如何发送和接收十六进制数 [打印本页]

作者: copywu    时间: 2008-08-26 17:16
标题: 请教关于perl下socket编程,如何发送和接收十六进制数
请教关于perl下socket编程,如何发送和接收十六进制数

主要是该如何接收十六进制数呢,目前有个服务端程序在接收相应指令后,返回的结果是十六进制数,不知道该如何接收。。
以下是我的客户端程序,接收到十六进制数的时候就会出现乱码,,请各位帮忙看看该如何改呢,

  1. #!/usr/bin/perl

  2. use strict;
  3. use Socket;
  4. my ($name,$len,$aliases,$proto,$type,$ServerAddr,$buffer);
  5. my $server = $ARGV[0] || '127.0.0.1';
  6. my $port = $ARGV[1] || '11122';

  7. my $PF_INET=2;
  8. my $SOCK_STREAM=1;
  9. $proto=getprotobyname("tcp");
  10. $|=1;
  11. my $BUFFER = "$ARGV[2]";
  12. #my $BUFFER = "\$002";
  13. $BUFFER .= chr(13);
  14. ($name,$aliases,$type,$len,$ServerAddr) = gethostbyname($server);
  15. my $ADDR=pack('Sna4x8',$PF_INET,$port,$ServerAddr);

  16. socket (SOCKET,$PF_INET,$SOCK_STREAM,$proto) or die "Can't create socket: $!";
  17. connect (SOCKET,$ADDR) or die "Can't connect: $!";

  18. syswrite(SOCKET, $BUFFER, length($BUFFER));
  19. sysread(SOCKET, $buffer, 200);
  20. print $buffer;
  21. print "\n";
  22. exit(0);
复制代码

作者: 9119111    时间: 2008-08-26 17:19
print hex $buffer;

不行?
作者: flw    时间: 2008-08-26 17:20
pack unpack
用的贼爽
作者: xiaoyu9805119    时间: 2008-08-26 17:49
原帖由 flw 于 2008-8-26 17:20 发表
pack unpack
用的贼爽



确实
作者: dnglee    时间: 2008-09-02 08:36

  1. sub hex_string {
  2.     my $string = shift;
  3.     jion " ", map{sprintf "%02X", ord($_)} split //, $string;
  4. }
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2