近期评论

Archive for 六月, 2013

笔记本电脑配置wifi热点

下面的配置经测试对win7有效,对XP无效,对于win2008,win2003不确定是否有效。

原理主要是利用笔记本的无线网卡的收发功能实现和网卡之间的网络共享。

 

一、配置热点,生成虚拟网卡

netsh wlan set hostednetwork mode=allow ssid=hotwifi key=thy123456 keyUsage=temporary

注意:

mode配置是否启用虚拟网卡,allow表示启用,disallow表示不启用;

ssid配置wifi热点的ssid;

key是wifi的密码;

keyUsage配置重启是否继续还生效;

persistent表示重启生效,temporary表示后虚拟网卡消失即取消热点。

 

具体配置如下图:

PC_wifi_1

 

 

二、配置网卡的网络共享

修改当前已经启动并且能够上网的网卡属性,在共享里选择刚才生成的虚拟网卡名称,确保两个方框都已经打勾,然后确定。如下图所示:

PC_wifi_2

 

PC_wifi_3

PC_wifi_4

三、启动无线热点。

如下图所示意:

PC_wifi_5

pack和unpack

利用socket传输数据时,如果只传输一个简单的数据,不需要用pack打包成一个整体,放到一块缓存中,传到远端主机。

但是实际情况经常要传输各种类型的数据,比如:账号,密码,图片,ip地址,校验和,序号等。而Socket函数传递数据只有一个参数,所以如果要一次传输多个独立的数据时,必须把这些数据整合在一起,类似于rar压缩文件后上传。在底层传输数据就是通过pack来打包数据成某种指定格式的数据。unpack则相反,用于解包。

 

 

pack用法:pack("指定压缩成的数据类型",要压缩的数据1,要打包的数据2…)

unpack用法参照pack用法。

 

pack参数比较多,关键是根据字节长度来确定使用什么参数。

pack打包后的结果就是所有数据都是高字节在前,这种顺序也叫网络序

 

格式符

长度/byte

描述

举例说明

a

1

用空字符(null)补足的字符串

通常用a4来打包IP地址

A

1

用空格补足的字符串(ASCII)

 

b

 

位串,低位在前

 

B

 

位串,高位在前

my $IP_bin=unpack('B32',$IP_raw);将原始数据$IP_raw转换为二进制数赋给$IP_bin

c

1

带符号字符(通常-128~127)

 

C

1

无符号字符(通常8位)(0~255)

 

d

5

双精度浮点数

 

f

4

单精度浮点数

 

h

 

十六进制数串,低位在前

my $tcp_header = pack('H2B8' , $doff,$flags)将$doff这个字符串理解为16进制数,然后转化为二进制,将$flag这个字符串理解为二进制数,直接打包数据

H

 

十六进制数串,高位在前

i

4

带符号整数即int

 

I

4

无符号整数即unsigned int

 

l

4

带符号长整数long int

 对于64位系统占8字节

L

4

无符号长整数unsigned long int

 对于64位系统占8字节

n

2

网络序短整数

(高位在前,内存地址低)

占16比特的字段如端口,滑动窗口,校验和,标识,紧急指针,报文总长度等都用n打包,TCP序号用N打包。
所有网络协议也都是采用big endian的方式来传输数据的。所以把big endian方式称之为网络字节序。

N

4

网络序长整数

(高位在前,内存地址低)

p

 

字符串指针

 

s

2

带符号短整数short int(-32768~32767)

 

S

2

无符号短整数unsigned int(0~65535)

 

u

 

转化成uuencode格式

 

v

2

VAX序短整数(低位在前,内存地址低)

和n在内存的分布位置相反

V

4

VAX序长整数(低位在前,内存地址低)

和N在内存的分布位置相反

x

 

一个空字节,跳过一个字节打包

调整位置的参数有x,X,@,这几个参数不代表任何数据类型
$longrightint = unpack ("@* X4 L", $packstring);表示先跳到最后,然后回退4个字节,即倒数4个字节的数据,然后以L无符号长整数类型打包

X

 

回退一个字节

@

 

以空字节(null)填充

 

举例说明:

############################################################

#!/usr/bin/perl

use strict;

 

my $haision;

$haision = pack("N2,n3",65,67,104,55,89);

#N代表无符号整形,前面两个参数65,67转化成无符#号长整形数据,把后面三个数据104,55,89转化成无#符号短整形数据。

 

print "\$haision:$haision\n";

 

print "=========================\n";

 

my @result=unpack("N2,n3",$haision);

print "\@result:@result\n";

############################################################