服务器和客户端信息获取

字节序转换:

#include<arpa/inet.h>

uint32_t
htonl(uint32_t hostlong);

uint16_t
htons(uint16_t hostshort);

uint32_t
ntohl(uint32_t netlong);

uint16_t
ntohs(tint16_t netshort);

字符串IP地址和二进制IP地址转换:

#include<sys/scoket.h>

#include<netinet/in.h>

#include<arpa/inet.h>

int
inet_aton(const char *cp,struct in_addr *inp); //四段式到in_addr

in_addr_t
inet_addr(const char *cp); //将字符串转换为in_addr

in_addr_t
inet_network(const char *cp);将字符串地址的网络部分转为in_addr

char
*inet_ntoa(struct in_addr in); //将in_addr结构地址转为字符串

struct
in_addr inet_makeaddr(int net,int host); //将网络地址和主机地址合成ip地址

in_addr_t
inet_lnaof(struct in_addr in); //获得地址的主机部分

in_addr_t
inet_netof(struct in_addr in); //获得地址的网络部分

判断是否合法的套接字描述符:

int
issockettype(int fd)

{

struct
stat st;

int
err=fstat(fd,&st);

if(err<0)

return
-1;

if((st.st_mode&S_IFMT)==S_IFSOCK){

return
1;

}else

{

return
0;

}

}

获取主机信息函数:

gethostbyname()函数:#include<netdb.h>

原型:struct
hostent *gethostbyname(const char *name);

当返回值为NULL时,错误类型可由errno获得


HOST_NOT_FOUND


查不到相关主机


NO_ADDRESS和NO_DATA


名称合法但没有合适的IP


NO_RECOVERY


域名服务器不响应


TRY_AGAIN


域名服务器当前出现临时性错误,稍后再试

struct
hostent结构:

struct
hostent {

char
*h_name; //主机的正式名称

char
**h_aliases; //别名列表

int
h_addrtype; //主机地址类型

int
h_length; //地址长度

char
**h_addr_list; //地址列表,以NULL结尾

}

gethostbyaddr()函数

struct
hostent *gethostbyaddr(const void *addr,int len,int type);

type在ipv4的情况下为AF_INET

协议名称处理函数:

#include<netdb.h>

struct
protoent *getprotoent(void); //从协议文件中读一行

struct
protoent *getprotobyname(const char *name); //从协议文件中找到匹配的行

struct
protoent *getprotobynumber(int proto); //按照协议类型的值获取匹配项

void
setprotoent(int stayopen); //设置协议文件打开的状态

void
endprotoent(void); //关闭协议文件

本文出自http://qianyang.blog.51cto.com/,转载请务必注明出处

时间: 02-19

服务器和客户端信息获取的相关文章

ASP.NET获取客户端信息,获取客户端IP等等

山上明月 ASP.NET能知道的东西 获取服务器电脑名: Page.Server.ManchineName 获取用户信息: Page.User 获取客户端电脑名:Page.Request.UserHostName 获取客户端电脑IP: Page.Request.UserHostAddress 1. 在ASP.NET中专用属性: 获取服务器电脑名:Page.Server.ManchineName 获取用户信息:Page.User 获取客户端电脑名:Page.Request.UserHostName

客户端程序获取自己的ip、isp、地理位置等信息

@ 比如说你需要收集用户信息,又或者要通过这些信息让用户登陆合适的服务器(北京联通用户登陆北京联通服务器). @ 淘宝和新浪都提供了类似的API,你只需要发送一个http请求,它就返回一个json格式的字符串结果.但是淘宝的API必须填上要查询的ip,如果程序不知道自己的ip的话就瞎了.所以我选择使用新浪的. http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串] http://int.dpool.sina.com.cn/iplookup/i

获取DNS服务器的版本信息

1 如何获取DNS服务器的版本信息 向某个DNS服务器发送下面的请求即可获得版本信息 ? 1 dig @115.124.17.156 version.bind chaos txt 它返回的信息如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ; <<>> DiG 9.7.0-P2-RedHat-9.7.0-5.P2.el6 <<>> @115.124.17.156 version.bind

C# 实现访问FTP服务器下载文件,获取文件夹信息小记

最近因为要开发广告制作工具,自动生成广告流,需要获取第三方服务器上的文件资源,经过摸索,从这次经历中记录下. FtpWebRequest reqFtp; WebResponse response = null; //获取文件夹信息 reqFtp = (FtpWebRequest)WebRequest.Create(this.ftp);//ftp://IP:port/文件夹名1/文件夹名2/.../文件夹名 reqFtp.UseBinary = true; reqFtp.KeepAlive = f

Java Socket应用(六)——服务器响应客户端

转载请注明:http://blog.csdn.net/uniquewonderq 通过输入流来读取客户端信息,相应的时候通过输出流来实现. 服务端类的代码: package com.test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; imp

安全通信系统--OpenSSL服务器和客户端

环境配置 SSL的初始化 这一步主要使用OpenSSL提供的函数设置算法.证书等,一般步骤都固定了的,初始化流程示意图如下所示: SSL初始化流程图 主要代码为: [cpp] view plain copy print? SSL_load_error_strings(); /*为打印调试信息作准备*/ OpenSSL_add_ssl_algorithms(); /*初始化*/ //meth = TLSv1_server_method(); /*采用什么协议(SSLv2/SSLv3/TLSv1)在

Node学习HTTP模块(HTTP 服务器与客户端)

Node学习HTTP模块(HTTP 服务器与客户端) Node.js 标准库提供了 http 模块,其中封装了一个高效的 HTTP 服务器和一个简易的HTTP 客户端.http.Server 是一个基于事件的 HTTP 服务器,它的核心由 Node.js 下层 C++部分实现,而接口由JavaScript封装,兼顾了高性能与简易性.http.request 则是一个HTTP 客户端工具,用于向 HTTP 服务器发起请求. 'http'模块提供两种使用方式: 作为服务端使用时,创建一个HTTP服务

openvpn 服务器和客户端搭建和配置

1, 搭建环境: 电脑A : win7 64bit,  作为openvpn server 网上下载openvpn安装包,直接安装. 网口1, 有线网络,可以访问外网 网口2 ,无线网络,只有局域网,没有外网,和客户端基于这个通信 电脑B  : ubuntu 12.04 64bit , 作为openvpn client 从git下载最新的openvpn代码,编译安装 网口1, 无线网络,无外网. 2, 搭建服务器   2.1 参考网上的文章,通过在命令行创建 各个证书和私钥.下面的名字不是固定,后

C# Socket通信的服务器与客户端

客户端代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; using System.Threading; namespace ClientSocket { class Program { private static byte[] result = new byte[1024]; s