gsoap:实现线程池处理时获取到客户端的ip
问题:
在使用线程池处理客户端请求时发现不能获取到客户端的ip!
原因:
static unsigned long ips[MAX_QUEUE];
int enqueue(SOAP_SOCKET sock,unsigned long ip)//添加ip的参数
{
int status = SOAP_OK;
int next;
int ret;
if ((ret = MUTEX_LOCK(queue_cs)))
fprintf(stderr, "MUTEX_LOCK error %d\n", ret);
next = (tail + 1) % MAX_QUEUE; //1000
if (head == next)
{
/* don't block on full queue,
* 队列已满,return SOAP_EOM */
status = SOAP_EOM;
}
else
{
queue[tail] = sock;
ips[tail] = ip; //保存ip
tail = next;
if ((ret = COND_SIGNAL(queue_cv)))
fprintf(stderr, "COND_SIGNAL error %d\n", ret);
}
if ((ret = MUTEX_UNLOCK(queue_cs)))
fprintf(stderr, "MUTEX_UNLOCK error %d\n", ret);
return status;
}
unsigned long dequeue_ip()
{
unsigned long ip;
int num=0;
if(head == 0)
num = MAX_QUEUE - 1;
else
num = head -1;
ip = ips[num];
return ip;
}
void *process_queue(void *soap)
{
struct soap *tsoap = (struct soap*)soap;
for (;;)
{
tsoap->socket = dequeue();
tsoap->ip = dequeue_ip();//获取相应的ip地址
if (!soap_valid_socket(tsoap->socket))
{
#ifdef DEBUG
fprintf(stderr, "Thread %d terminating\n", (int)(long)tsoap->user);
#endif
break;
}
int http_get_handler(struct soap *soap)
{
。。。。。
fprintf(stderr, "Request accepts connection from IP %d.%d.%d.%d\n",
(int)(soap->ip>>24)&0xFF, (int)(soap->ip>>16)&0xFF,(int) (soap->ip>>8)&0xFF, (int)soap->ip&0xFF);
。。。。。。
}
Request accepts connection from IP 192.168.1.136
Request accepts connection from IP 192.168.1.136
Thread 3 finished serving request with failure 404
Error 404 fault: SOAP-ENV:Client [no subcode]
"HTTP Error: 404 Not Found"
Detail: [no detail]
Request accepts connection from IP 192.168.1.87
Request accepts connection from IP 192.168.1.87
Request accepts connection from IP 192.168.1.87
gsoap:实现线程池处理时获取到客户端的ip的更多相关文章
- 怎么使用PHP获取用户客户端真实IP的解决方案呢?
function getIp(){if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIE ...
- PHP获取APP客户端的IP地址的方法
分析php获取客户端ip 用php能获取客户端ip,这个大家都知道,代码如下: /** * 获取客户端ip * @param number $type * @return string */ func ...
- PHP获取用户客户端真实IP的解决方案是怎样呢?
function getIp(){if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIE ...
- Nginx 反向代理时获取用户的真实 IP
在平时我们开发后端程序的过程中,应该多多少少都会碰到记录客户端 IP 的场景,例如我之前写过的 APP 用户的一个审计功能,就需要获取用户的 IP 地址:还有广告系统里面,也是需要获取用户的 IP 地 ...
- io流+网络+线程池 实现简单的多客户端与服务器端通信
1 import java.io.IOException; 2 import java.io.InputStream; 3 import java.io.OutputStream; 4 import ...
- PHP获取远程客户端真实IP的办法!
(1).REMOTE_ADDR:浏览当前页面的用户计算机的ip地址 (2).HTTP_X_FORWARDED_FOR: 浏览当前页面的用户计算机的网关 (3).HTTP_CLIENT_IP:客户端的i ...
- X-Forwarded-For 负载均衡 7 层 HTTP 模式获取来访客户端真实 IP 的方法(IIS/Apache/Nginx/Tomcat)
https://help.aliyun.com/knowledge_detail/13051859.html?pos=1 1.IIS 6 配置方案2.IIS 7 配置方案3.Apache 配置方案4. ...
- javase-->多线程--线程池
java的线程池理解 在面向对象编程中,对象创建和销毁是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源.在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收. ...
- java并发编程(十七)Executor框架和线程池
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17465497 Executor框架简介 在Java 5之后,并发编程引入了一堆新的启动 ...
随机推荐
- 安卓MonkeyRunner源码分析之与Android设备通讯方式
如前文<谁动了我的截图?--Monkeyrunner takeSnapshot方法源码跟踪分析>所述,本文主要会尝试描述android的自动化测试框架MonkeyRunner究竟是如何和目 ...
- monkey源码分析之事件注入方法变化
在上一篇文章<Monkey源码分析之事件注入>中,我们看到了monkey在注入事件的时候用到了<Monkey源码分析番外篇之Android注入事件的三种方法比较>中的第一种方法 ...
- C++ - 模板类模板成员函数(member function template)隐式处理(implicit)变化
模板类模板成员函数(member function template)隐式处理(implicit)变化 本文地址: http://blog.csdn.net/caroline_wendy/articl ...
- leetcode第12题--Integer to Roman
Problem: Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range ...
- 探秘ReSharper8.1版本中Architecture(架构工具)的改进
在ReSharper 8.0新版本中,有一个叫做Architecture(结构工具)的新功能,此功能被定义为项目依赖关系分析.其目的是让用户可视化操作解决方案的结构.接下来,小编将在ReSharper ...
- office编程必不可少
原文:office编程必不可少 [转] 1. 微软官方实例: 段落.表格.图表 HOW TO:利用 Visual C# .NET 使 Word 自动新建文档 2. 学习资源 (1)Word in th ...
- 通过SqlClr制作Sql自动化批量执行脚本
原文:通过SqlClr制作Sql自动化批量执行脚本 通过SqlClr制作Sql自动化批量执行脚本 在与同事一起做项目时,看到同事用sqlclr做批量执行脚本,感觉挺新奇的就上网搜集资料自己模仿跟做了个 ...
- MY WAY程序(十八) 团队开发
1.通信知识 要了解的强哥的移动通信先验知识布局.我和另外一个毕业生有自己的学习,但我真的没有认真看.了解了一下,其余大部分时间在搞nodejs.另外一个应届毕业生则是按着一本电子书 ...
- Strongly connected(hdu4635(强连通分量))
/* http://acm.hdu.edu.cn/showproblem.php?pid=4635 Strongly connected Time Limit: 2000/1000 MS (Java/ ...
- EF6+MVC4+EasyUI个人日记系统开源共享
发现在2015年里学习MVC的人越来越多,本人的群成员也越来越多,为了更方便大家学习,在此共享一个个人的小项目. 如下是部分截图: 简单介绍一下本系统的一些相关知识. 1.简单的3层框架,易学易懂 2 ...