社区
消息协作
帖子详情
c/s结构下,怎样获得当前用户(客户端)的IP地址?谢谢!
gostesee
2003-08-26 10:41:27
c/s结构下,怎样获得当前用户(客户端)的IP地址?请给出源代码或数据库,谢谢!我的邮箱 chxjmail@btamail.net.cn
...全文
80
10
打赏
收藏
c/s结构下,怎样获得当前用户(客户端)的IP地址?谢谢!
c/s结构下,怎样获得当前用户(客户端)的IP地址?请给出源代码或数据库,谢谢!我的邮箱 chxjmail@btamail.net.cn
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
briliang
2003-08-29
打赏
举报
回复
我单位很需要lotus安全监控的产品,可以联系吗?
briliang@sina.com
gostesee
2003-08-27
打赏
举报
回复
呵呵,解决了,向ntko(磁化水)学习,也谢谢楼上各位。
ntko
2003-08-26
打赏
举报
回复
有关dsapi你可以看一下相关文档,去ibm搜索lotus c API reference和userguide,
讲的比较详细。
但是,如果要完成你的功能,我建议你没必要写API,
可以在as400上通过ip协议来配置,不知可否?
因为我们有一个产品是关于lotus 安全的,可惜是在win2k上运行的,能够实现你说的功能,
还可以限制某人只能在某台机器上使用客户端,这样就必须写API了。
只是我不太方便公开源代码。
gostesee
2003-08-26
打赏
举报
回复
请ntko(磁化水)讲述大概api使用,我只知道得到客户端机器名称,可怎样把机器名称转化成ip呢?
gostesee
2003-08-26
打赏
举报
回复
domino运行在as400上,想获得客户端ip运用是防止不是局域网内部机器就不允许访问数据库,即使拥有合法的id也不行。
ntko
2003-08-26
打赏
举报
回复
这个问题用一个Notes数据库是解决不了的。必须使用DSAPI来解决。
请具体描述一下你的应用。
ntko
2003-08-26
打赏
举报
回复
或者:
以下代理可以获得客户端IP地址,并将其放到选中文档的IPadddress域:
mport lotus.domino.*;
import java.net.*;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
// (Your code goes here)
Document doc = agentContext.getDocumentContext();
if (doc != null)
{
InetAddress local = InetAddress.getLocalHost();
doc.replaceItemValue("IPAddress", local.getHostAddress());
doc.save();
}
} catch(Exception e) {
e.printStackTrace();
}
}
}
ntko
2003-08-26
打赏
举报
回复
daluoboequalto(大萝卜) :你有其它方法吗?
chenyg2000(icerain) :C/S方式用Java代理不能实现。
gostesee () :下面代码仅供参考(win2k下的)
首先注册一个事件:
STATUS LNPUBLIC MainEntryPoint(void)
{
STATUS err;
err = EMRegister( EM_SECAUTHENTICATION,
EM_REG_AFTER,
ExtCallback,
0, ®EMId1);
return err;
}
下面是事件回调函数:(当Notes客户端链接时发生)
STATUS LNPUBLIC ExtCallback( EMRECORD FAR * theData )
{
VARARG_PTR argPtr;
STATUS sError = ERR_EM_CONTINUE;
argPtr = theData->Ap;
/* do nothing if there is an error. */
if ( theData->Status )
{
return theData->Status;
}
switch (theData->EId)
{
case EM_SECAUTHENTICATION:
/* declare the arguments */
WORD wEvent = 0;
SESSIONID SessionId;
char *pRemoteName = NULL;
DWORD dwFlags = 0;
WORD wNetProtocol = 0;
char *pNetAddress;
/* get the arguments */
wEvent = VARARG_GET( argPtr, WORD );
SessionId = VARARG_GET( argPtr, SESSIONID );
pRemoteName = VARARG_GET( argPtr, char far * );
dwFlags = VARARG_GET( argPtr, DWORD );
wNetProtocol = VARARG_GET( argPtr, WORD );
//若上面的协议为TCPIP,此处pNetAddress 就是客户的IP地址
pNetAddress = VARARG_GET( argPtr, char far * );
/* for this example, only process post Domino Authentication */
if (theData->NotificationType != EM_AFTER)
break; /* break out of here */
/* switch on types of wEvent */
switch (wEvent)
{
/* additional authentication code goes here */
case AUTHEM_StartAuthentication:
if (dwFlags & fAuthRoleServer)
{
/* protocol processing... */
switch (wNetProtocol)
{
case PROTOCOL_TCP:
//你要实现的功能在这儿,pRemoteName是用户名,pNetAddress是用户IP地址
处理函数(pRemoteName,pNetAddress);
break;
default:
break;
}
}
sError = ERR_EM_CONTINUE;
break;
default:
sError = ERR_EM_CONTINUE;
break;
}
} /* END SWITCH */
return( sError );
}
要将这些函数(还有其它一些必须的函数,具体参阅API资料)
编译为DLL,并且在服务器的notee.ini文件中加入
EXTMGR_ADDINS=你的DLL
这样,每次用户从Notes Client登录都会调用你的函数了。
chenyg2000
2003-08-26
打赏
举报
回复
可以通过java代理实现
daluoboequalto
2003-08-26
打赏
举报
回复
7
软件体系
结构
课程设计基于 C/S 的网络聊天室系统源码+课程设计报告,用Linux网络编程作为服务器,使用QT编程作为
客户端
本程序为基于 C/S 的网络聊天室系统,使用 Linux 网络编程作为服务器,使用 QT 编程作为
客户端
。
客户端
通过输入 IP 地址、端口号、Email、聊天名称、聊天组号连接到服务器,
用户
通过
客户端
发送消息,同时接收来自相同组其他
客户端
发送的消息,获取
当前
在 线
用户
信息,通知新
用户
的上线和
用户
的下线,实现群聊功能。 服务器负责管理
用户
的连接、发送消息与退出,有新
用户
建立连接时,记录新用 户信息,并向同组其他
客户端
广播;
用户
退出时,清除
用户
信息,并向同组其他客户 端广播离开信息;当有
用户
发送消息时,向同组其他
客户端
广播。
JAVA网络通信系统的研究与开发的设计
应用了计算机网络通信技术和JAVA网络编程的基础知识,以JAVA为平台,利用Eclipse开发工具,并使用SQL Server 2000管理数据库数据开发出的基于Socket的网络即时通信系统。系统采用客户机/服务器(C/S)的模式设计,是一个三层C/S
结构
,数据库服务器、应用程序服务器端、应用程序
客户端
,按照此设计思想,系统采用C/S
结构
,可以将任务合理分配到客户机端和服务器端 ,从而降低了系统的通信开销。此系统共分为两个模块:
客户端
模块和服务器端模块。从操作简便、界面美观、灵活实用的
用户
要求出发,设计开发的网络通信系统可以实现
用户
注册,
用户
登录,消息通信和好友管理等主要功能。 监听登录事件 1)
用户
在
客户端
程序中输入
用户
号码和密码,与服务器连接,向服务器发送登录请求。 2) 服务器收到该请求后,通过JdbcOdbc读取数据库,与
用户
输入的信息作比较,若
用户
输入的信息与数据库相同,则服务器向
用户
返回成功信息,将其status字段设为1,并注册
用户
当前
使用的
ip地址
,否则服务器向客户返回登录失败的消息。
客户端
收到服务器的成功确认后,打开聊天主窗口,否则弹出失败信息。 3) 若登录
第08章-
IP地址
--分类编址和无分类编址
课程内容如下:
IP地址
的用途、种类和表示方法
IP地址
的分类方法及怎样判别IP属于哪一类
IP地址
的地址块概念理解及地址块范围划分方法
IP地址
中的特殊地址详解
IP地址
中的单播、组播、广播简析分类编址:通过
IP地址
和掩码计算网络地址详解分类编址:基于IP划分子网-子网掩码分类编址:构建超网无分类IP编址:划分子网实战无分类IP编址:可变长子网掩码(VLSM)实战
网络棋牌游戏服务器架构.docx
一、物理架构说明 游戏系统组件包括: 服务器系统(中心服务器控制系统,服务器登陆控制系统,游戏登陆服务器,游戏房间控制系统,游戏组件系统),游戏
客户端
(游戏大厅,游戏组件)。 数据库系统:用于保存
用户
信息数据、游戏积分数据、游戏系统运行状态数据,系统日志数据等数据。 中心服务器控制系统:用于向
客户端
提供全局配置,初始化数据使用。 服务器登陆控制系统:用于房间服务控制系统登陆效验使用。 游戏房间控制系统:用于控制游戏房间的启动,停止,添加,删除,管理等。 游戏组件系统:用于具体游戏服务,被游戏房间控制系统挂接,提供游戏服务。 游戏大厅:游戏玩家连接游戏使用。 二、系统
结构
系统选用的开发工具是优秀的Microsoft Visual C++.net2003,系统采用
客户端
/服务器(C/S)编程模式,TCP/IP协议作为
客户端
和服务器的通信网络层,运用具有性能最优的完成端口(IOCP:Input/Output Completion Port )网络开发模型搭建服务器软件.
客户端
采用WinSocket API作为网络层。 系统采用多服务器分布式架构,由一个中心服务器(CENTERSERVER),多个主服务器(MainServer)和多个从服务器(LocalServer)同时工作以实现游戏逻辑和
用户
管理及通讯的功能。中心服务器向
客户端
提供全局配置,初始化数据(主要是定位一个主服务器
IP地址
),主服务器管理
客户端
用户
身份验证、登录以及管理从服务器的建立,由多个从服务器管理游戏通信,大厅及房间,从服务器可任意添加、删除、修改等。 网络棋牌游戏服务器架构全文共7页,
当前
为第1页。系统首先启动中心服务器(CENTERSERVER), 中心服务器从INI文件中读取MainServer列表信息,
客户端
提供全局配置,初始化数据,然后等待客户联结, 客户联结后CENTERSERVER定位一个MainServer的
IP地址
和端口号,发往
客户端
,
客户端
收到后断开CENTERSERVER的联接,并马上用MainServer的
IP地址
和端口号,和主服务器(MainServer)连接.主服务器从数据库中读取从服务器的所有信息到主服务器的内存。首先读取ComType表以建立所有的游戏类型的基本信息,然后读取ServiceInfo(界面树结点信息表)以
获得
包括
客户端
界面
结构
、从服务器的信息、大厅和房间的一切信息。当有
客户端
请求登录并成功和主服务器连接的时候,主服务器将这所有的信息一次性发到
客户端
内存,
客户端
根据这些信息生成界面
结构
树。 网络棋牌游戏服务器架构全文共7页,
当前
为第1页。 主服务器启动后还可以在主服务器里创建多个从服务器及房间,创建完成后从服务器的
IP地址
及端口号就作为它的唯一标识被同时写进数据库和主服务器的内存;房间号、房间所属的游戏类型、所属的从服务器号也作为房间的唯一标识被同时写进数据库和主服务器的内存。 从服务器创建以后就在它所属的机器上启动。
客户端
登录后首先和主服务器建立连接(并且一直到
客户端
退出才断开)连接成功后生成界面
结构
树(前述),当
用户
点击某个游戏房间的时候系统从内存中读出这个房间的所有信息(前述),根据房间所属从服务器的
IP地址
及端口号试图和这个从服务器建立连接,连接成功后相应的从服务器就将这个房间的所有信息发到这个
客户端
,
客户端
收到以后就根据这些信息生成房间。每当有
客户端
的游戏位置发生改变的时候就向从服务器发送改变信息,从服务器保存、修改所有与它连接的
客户端
的位置信息列表。 当一张桌子坐满时游戏开始。游戏开始后
客户端
也是和从服务器通信以更新游戏信息。 当
客户端
退出游戏后就回到大厅的这个房间,当退出大厅的时候首先和从服务器断开连接,然后和主服务器断开连接,最后终止整个
客户端
程序。 三、模块
结构
系统包括三大主要模块
结构
:MainServer,LocalServer,Com.此外还有
客户端
安装,更新模块等。在三大主要模块
结构
中还有子DLL(动态链接库)模块。 1、MainServer(EXE项目):封装主服务器功能,包括管理
客户端
用户
身份验证、登录以及管理从服务器的建立,数据库读写等。 2、LocalServer(EXE项目):封装从服务器功能,包括管理
客户端
游戏通信,游戏逻辑,大厅及房间等。 3、Com(EXE项目):封装
客户端
所有功能,包括
客户端
登录,大厅及房间,
客户端
游戏通信,游戏逻辑等。Com包括以下子模块:
客户端
通用库PubLib(DLL模块)封装了
客户端
通用的调用接口,控件,类。供
客户端
所有的模块调用. 麻将游戏通用库MJLib(DLL模块)封装了
客户端
麻将游戏通用的调用接口类和十堰麻将类。通用的调用接口类供特殊的麻将游戏模块调用。 网络棋牌游戏服务器架构全文共7页,
当前
为第2页。扑克牌游戏通用库PisaLib(D
DNS实验报告.pdf
DNS 服务器程序 实验报告 系统和运行环境描述 Windows7 操作系统平台,VS2010 编程环境。 使用 C/C++编写 dns 中继服务器。 系统功能设计 设计 DNS 服务器程序,读入 域名-IP 地址 对照表,当
客户端
查询域名对应的 IP 地址时,用域名检索该对照表,有三种检索结果: (1)检索结果为 ip 地址 0.0.0.0,则向
客户端
返回 域名不存在 的报错消息 (不良网站拦截功能) (2)检索结果为普通 IP 地址,则向客户返回这个地址(服务器功能) (3)表中未检到该域名,则向因特网 DNS 服务器发出查询,并将结果返给客户 端(中继功能) 。 需要考虑的问题: (1)多
客户端
并发 允许多个
客户端
(可能会位于不同的多个计算机)的并发查询,即:允许第一个 查询尚未得到答案前就启动处理另外一个
客户端
查询请求(DNS 协议头中 ID 字 段的作用) 超时处理 (2)由于 UDP 的不可靠性,考虑求助外部 DNS 服务器(中继)却不能得到应答 或者收到迟到应答的情形。 主要数据
结构
主要的全局的数据
结构
定义在 dns.h 的头文件中。 struct req_inform{ struct sockaddr_in cli_addr; unsigned short id; };//id和 cli_addr 唯一标识一个DNS请求 该
结构
唯一标示了一个来自
客户端
的 dns 请求。 map
url_ip_table; 用来构建本地存储的 url_ip_table.txt 中域名和 IP 的映射。 map
req_cache[cache_num]; 这一个 map 映射,把
客户端
dns 请求映射到一个 unsigned short 上面,用它来 存储 id 转换表。另外和 id 转换表相关的参数是如下: #define cache_num 3 #define cache_size 1000 int cur_cache=0; int idThen_max=cache_num*cache_size; int idThen=0; cache_num 指定了 id 转换表的个数,cache_size 是每个 id 转换表的大小, cur_cache 指向是
当前
正在装入的 id 转换表, idThen 是一个从 0 到 0xFFFF 一直 循环的被映射到的 id 号。 这个设计的作用是代替了时间戳,而且可以根据实际情况来指定 id 转换表缓存 的大小。 具体流程是: 生成 id 转换的 item(idThen,struct req_inform 的一个变量) 把 id 转换的 item 加入到 req_cache[cur_cache]中 如果 req_cache[cur_cache]已经达到 cache_size{ cur_cache 指向下一个 id 转换表,并将其清空 } idThen 加 1 具体实现在 dns_fuc.cpp 的 ask_next_server 函数中。 int sockfd; struct sockaddr_in ser_addr,nser_addr; sockfd 是一个绑定到 ser_addr(dns 服务器本机 53 号端口)的一个 socket 描述 符,用它来进行 udp 报文传输。 ser_addr 初始化为本地 53 号端口的地址, nser_addr 是上级服务器的 53 号端口 (中继功能时使用) 。 const char * nx_ip="211.68.71.4";//保存上级服务器的 ip const char * file_name="C:/Users/Administrator/Desktop/dns/dns/url_ip_table.txt"; //保存 url_ip_table.txt 的路径 struct dns_ans_add{ unsigned short url_pointer; unsigned short type; unsigned short clas_s; unsigned short time1; unsigned short time2; unsigned short sourse_size; unsigned int sourse; }; 这个是与 dns 请求相比 dns 响应追加部分。 模块划分 int get_url_ip_table( map
& table); 用来从文件中读入 url_ip_table。 int init(); 用来初始化 ser_addr、nser_addr、sockfd,以及对 sockfd 绑定
消息协作
535
社区成员
39,101
社区内容
发帖
与我相关
我的任务
消息协作
企业开发 Exchange Server
复制链接
扫一扫
分享
社区描述
企业开发 Exchange Server
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章