当前位置:  编程技术>其它
本页文章导读:
    ▪Linux下网络IP地址的转换函数 (转)      网络IP地址本是用32位二进制来表示的,为了记忆的方便可以用点分十进制来表示IP地址,同时,网络IP地址在网络传输和计算机内部的存储方式也不同,需要用函数来进行转换。 1.将点分.........
    ▪linux高级编程day10 笔记 (转)           摘要: 一.TCP的编程模型 回顾:  UDP模型的UML图  TCP模型的UML图 案例1:  TCP的服务器(在案例中使用浏览器作为客户程序)   socket建.........
    ▪获取审核策略      #include <windows.h>#include "Ntsecapi.h"LSA_HANDLE GetPolicyHandle(){ LSA_OBJECT_ATTRIBUTES ObjectAttributes; WCHAR SystemName[256] = {0}; ULONG SystemNameLength = sizeof(SystemName)/sizeof(SystemName[0]); LSA_UNICODE_STRING lusSystemName; NTSTA.........

[1]Linux下网络IP地址的转换函数 (转)
    来源:    发布时间: 2013-11-15

网络IP地址本是用32位二进制来表示的,为了记忆的方便可以用点分十进制来表示IP地址,同时,网络IP地址在网络传输和计算机内部的存储方式也不同,需要用函数来进行转换。 

1.将点分十进制字符串转换成十进制长整型数:in_addr_t inet_addr(const char *cp);       in_addr_t 即long型,参数cp表示一个点分十进制字符串,返回值是十进制长整型数。 

2.将长整型IP地址转换成点分十进制:char *inet_ntoa(struct in_addr in);   参数in是一个in_addr类型的结构体,这个结构体在man 7 ip中查得到:
  struct in_addr{
     uint32_t s_addr
  };
inet_ntoa返回的是点分十进制的IP地址字符串。 

3.主机字符顺序和网络字符顺序的转换:计算机中的字符和网络中的字符的存储顺序是不同的,计算机中的整型数和网络中的整型数进行交换时,需要相关的函数进行转换。如果将计算机中的长整型IP地址转换成网络字符顺序的整型IP地址,使用htonl函数。这些函数如下:

uint32_t htonl(uint32_t hostlong);将计算机中的32位长整型数转换成网络字符顺序的32位长整型数。(用于IP的转换)

uint16_t htons(uint16_t hostshort);将计算机中的16位整型数转换成网络字符顺序的16位整型数。。(用于port的转换)

uint32_t ntohl(uint32_t netlong);将网络中的32位常整型数转换成计算机中的32位长整型数。。(用于IP的转换)

uint16_t ntons(uint16_t netshort);将网络中的16位整型数转换成计算机中的16位整型数。。(用于port的转换)

转自:http://www.linuxidc.com/Linux/2012-01/51068.htm



鑫龙 2013-01-09 18:02 发表评论

    
[2]linux高级编程day10 笔记 (转)
    来源:    发布时间: 2013-11-15
     摘要: 一.TCP的编程模型 回顾:  UDP模型的UML图  TCP模型的UML图 案例1:  TCP的服务器(在案例中使用浏览器作为客户程序)   socket建立服务器的文件描述符号缓冲 bind把IP地址与端口设置到文件描述符号中 listen负责根据客户连接的不同IP...  阅读全文

鑫龙 2013-01-10 12:49 发表评论

    
[3]获取审核策略
    来源:    发布时间: 2013-11-15
#include <windows.h>
#include "Ntsecapi.h"
LSA_HANDLE GetPolicyHandle()
{
LSA_OBJECT_ATTRIBUTES ObjectAttributes;
WCHAR SystemName[256] = {0};
ULONG SystemNameLength = sizeof(SystemName)/sizeof(SystemName[0]);
LSA_UNICODE_STRING lusSystemName;
NTSTATUS ntsResult;
LSA_HANDLE lsahPolicyHandle;
GetComputerNameW(SystemName, &SystemNameLength);
// Object attributes are reserved, so initialize to zeros.
ZeroMemory(&ObjectAttributes, sizeof(ObjectAttributes));
//Initialize an LSA_UNICODE_STRING to the server name.
SystemNameLength = wcslen(SystemName);
lusSystemName.Buffer = SystemName;
lusSystemName.Length = SystemNameLength * sizeof(WCHAR);
lusSystemName.MaximumLength = (SystemNameLength+1) * sizeof(WCHAR);
// Get a handle to the Policy object.
ntsResult = LsaOpenPolicy(
        &lusSystemName,    //Name of the target system.
        &ObjectAttributes, //Object attributes.
        POLICY_ALL_ACCESS, //Desired access permissions.
        &lsahPolicyHandle  //Receives the policy handle.
);
if (ntsResult != ERROR_SUCCESS)
{
// An error occurred. Display it as a win32 error code.
wprintf(L"OpenPolicy returned %lu\n",
LsaNtStatusToWinError(ntsResult));
return NULL;
return lsahPolicyHandle;
}
BOOL GetAccountDomainInfo(LSA_HANDLE PolicyHandle)
{
NTSTATUS ntsResult = ERROR_SUCCESS;
PPOLICY_AUDIT_EVENTS_INFO  pPAEInfo = NULL;
PWCHAR name = NULL;
ntsResult = LsaQueryInformationPolicy(
PolicyHandle,                   // Open handle to a Policy object.
PolicyAuditEventsInformation, // The information to get.
(PVOID *)&pPAEInfo              // Storage for the information.
);
if (ntsResult == ERROR_SUCCESS)
{  
// There is no guarantee that the LSA_UNICODE_STRING buffer
// is null terminated, so copy the name to a buffer that is.
wprintf(L"auditingMode = %d\n", pPAEInfo->AuditingMode);
wprintf(L"AuditCategorySystem = %d\n", pPAEInfo->EventAuditingOptions[AuditCategorySystem]);
wprintf(L"AuditCategoryLogon = %d\n", pPAEInfo->EventAuditingOptions[AuditCategoryLogon]);
wprintf(L"AuditCategoryObjectAccess = %d\n", pPAEInfo->EventAuditingOptions[AuditCategoryObjectAccess]);
wprintf(L"AuditCategoryPrivilegeUse = %d\n", pPAEInfo->EventAuditingOptions[AuditCategoryPrivilegeUse]);
wprintf(L"AuditCategoryDetailedTracking = %d\n", pPAEInfo->EventAuditingOptions[AuditCategoryDetailedTracking]);
wprintf(L"AuditCategoryPolicyChange = %d\n", pPAEInfo->EventAuditingOptions[AuditCategoryPolicyChange]);
wprintf(L"AuditCategoryAccountManagement = %d\n", pPAEInfo->EventAuditingOptions[AuditCategoryAccountManagement]);
wprintf(L"AuditCategoryDirectoryServiceAccess = %d\n", pPAEInfo->EventAuditingOptions[AuditCategoryDirectoryServiceAccess]);
wprintf(L"AuditCategoryAccountLogon = %d\n", pPAEInfo->EventAuditingOptions[AuditCategoryAccountLogon]);
if (ERROR_SUCCESS != LsaFreeMemory(pPAEInfo))
wprintf(L"LsaFreeMemory error\n");
}
else
{
// Show the corresponding win32 error code.
wprintf(
L"Error obtaining account domain information - (win32) %lu\n",
LsaNtStatusToWinError(ntsResult));
}
return !ntsResult;
}

int main(int argc, char* argv[])
{
LSA_HANDLE lh = NULL;
lh = GetPolicyHandle();
if(lh)
{
GetAccountDomainInfo(lh);
}
return 0;
}


hello wold! 2013-01-10 15:41 发表评论

    
最新技术文章:
▪修改月光博客网站中PHP常用正则表达式中出现...
▪js正则判断非法字符限制输入
▪通过正则表达式删除空行的方法
▪一个好用的正则匹配电话号手机号邮箱网址的...
▪JS 正则表达式用法介绍
▪几个小例子教你如何实现正则表达式highlight高...
▪如何实现正则表达式的JavaScript的代码高亮
▪js 玩转正则表达式之语法高亮
▪PHP中过滤常用标签的正则表达式
▪js 正则表达式学习笔记之匹配字符串
▪使用正则表达式匹配[***]样式的字符串
▪史上最详细的js日期正则表达式分享
▪php+正则将字符串中的字母数字和中文分割
▪正则表达式不区分大小写以及解决思路的探索...
▪正则替换换行符和把 br 替换成换行符
▪正则表达式匹配不包含某些字符串的技巧
▪匹配form表单中所有内容的正则表达式
▪正则表达式(括号)、[中括号]、{大括号}的区别...
▪正则表达式中的"g"是什么意思附件参数g的用...
▪浅谈正则表达式(Regular Expression)
▪Python正则表达式的七个使用范例详解
▪正则表达式提取img的src
▪常用的正则表达式集锦
▪使用正则表达式找出不包含特定字符串的条目...
▪js正则表达式中的问号几种用法小结
▪PHP中过滤常用标签的正则表达式 iis7站长之家
▪ajax对注册名进行验证检测是否存在于数据库...
▪js正则解析URL参数示例代码
▪JS使用正则去除字符串最后的逗号
▪几种常见攻击的正则表达式
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3