- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的代理应用程序,它监听端口 4711 上来自浏览器的连接。然后应用程序向服务器(自己的应用程序)发送请求,并将请求数据的服务器版本与本地缓存进行比较,然后应用该差异并将数据发送回浏览器。
我一直在使用非常简单的网站,仅包含主页。但只有在 IE 10 中才能正常工作。我测试了 FF、Chrome、Safari,但它们不起作用。它们在请求代理时挂起。
该应用程序是用 C 语言编写的,使用 SDL 和 SDL_Net 网络函数。使用非阻塞 TCP 套接字。我正在使用 VS 2010 和 Windows 8 进行调试。
请建议我应该首先检查什么。我知道我非常简要地描述了问题,但如果需要,我可以提供其他信息(代码片段等)。
好的。在这里放置一些代码。
typedef struct _UA_REQUEST
{
My_string full_url ;
uint32_t url_adler32 ;
TCPsocket sock_ua ;
uint32_t status_flag ; // ref Enum STATUS
} UA_REQUEST ;
UA_REQUEST GLB_ARRAY__UA_REQ[ NUM_UA_SOCK ] ;
TCPsocket GLB_SOCK_SS={0} , GLB_LSOCK_UA={0} ;
while( 1 )
{
nrdy = SDLNet_CheckSockets(GLB_SOCK_SET, -1 /*1000*/);
if(nrdy == -1 )
break ;
if( !nrdy )
continue ;
check_listener_socket() ;
check_user_agent_sockets() ;
check_single_stream_socket() ;
}
//==================================================================
// Check and handle connection request from UA ( user agent )
//==================================================================
void check_listener_socket()
{
uint32_t index ;
UA_REQUEST*ar = GLB_ARRAY__UA_REQ ;
if( !SDLNet_SocketReady( GLB_LSOCK_UA ) )
{
puts("check_listener_socket(): GLB_LSOCK_UA is not ready!");
return ;
}
TCPsocket sock_ua = SDLNet_TCP_Accept( GLB_LSOCK_UA ) ; // accept connection from browser
if( !sock_ua)
{
printf("ERR__TCP_Accept: %s\n", SDLNet_GetError());
goto quit ;
} else
printf("Accepted.\n");
for( index=0 ; (index < NUM_UA_SOCK) ; index++)
if( STATUS(ar,index) == ST_SOCK_CLOSED )
break ;
if( index >= NUM_UA_SOCK )
return;
SOCK_UA( ar , index ) = sock_ua;
STATUS( ar , index ) = ST_SOCK_AVLBL ;
SDLNet_TCP_AddSocket( GLB_SOCK_SET , SOCK_UA( ar, index ) ) ;
quit:
return;
}
//==================================================================
// Check and receive data from UA
//==================================================================
void check_user_agent_sockets()
{
UA_REQUEST *ar = GLB_ARRAY__UA_REQ ;
uint32_t index ;
for( index=0 ; index < NUM_UA_SOCK ; index++)
{
int ready = SDLNet_SocketReady( SOCK_UA(ar,index) );
if( /*STATUS( ar,index) != ST_SOCK_CLOSED &&*/
ready /*SDLNet_SocketReady( SOCK_UA(ar,index) ) */
)
{
printf("index = %i\n", index);
handle_ua_sock_ready( index ) ;
}
}
}
void handle_ua_sock_ready( uint32_t i )
{
My_string _req_mstr ;
MY_ALLOC( _req_mstr , MAXLEN )
byte*request = _req_mstr.c_str ;
byte*pcrlf = NULL ;
RESET_BUF(request)
UA_REQUEST*ar = GLB_ARRAY__UA_REQ ;
//uint32_t
int nrcv; // : Slava
nrcv = SDLNet_TCP_Recv( SOCK_UA(ar,i) , request , MAXLEN ) ;
if( nrcv<=0 )
{
puts("handle_ua_sock_ready() before handle_ua_sock_closed");
handle_ua_sock_closed( ar , i ) ;
puts("handle_ua_sock_ready() after handle_ua_sock_closed");
goto quit;
}
puts("1") ;
if(
( STATUS(ar,i) == ST_TUNNEL)
|| (MATCH( request , CONN , strlen(CONN)))
)
{
FULL_URL( ar , i ).c_str[0] = 0 ;
FULL_URL( ar , i ).len = 0 ;
STATUS( ar , i ) = ST_TUNNEL ;
request[nrcv] = 0 ;
send_to_server(TUNNEL_REQ ,request, nrcv, i);
goto quit;
}
puts("11") ;
if( get_hdrs_and_full_url(request, i ,(uint32_t*)&nrcv,pcrlf) == -1 )
{
puts("handle_ua_sock_ready() test 2");
goto quit ;
}
My_string *purl_mstr = &FULL_URL( ar , i ) ;
log_msg( purl_mstr->c_str , purl_mstr->len , __LINE__ ) ;
URL_ADLER32( ar, i) = my_adler_32( 1 , purl_mstr->c_str , purl_mstr->len ) ;
fwrite( FULL_URL(ar,i).c_str , sizeof(byte), FULL_URL(ar,i).len , GLB_REQ_LOG) ;
puts("111") ;
CHECK_AND_HANDLE_GET_HEAD_REQ( i , request , nrcv )
CHECK_AND_HANDLE_UNSUPPORTED(ar,i,request )
uint32_t uv = nrcv;
CHECK_AND_HANDLE_POST_OPT_REQ(ar,i,request ,/*nrcv*/ uv)
quit:
MY_FREE( _req_mstr )
return ;
}
//==================================================================
// Check and receive reply from "Server"
//==================================================================
void check_single_stream_socket()
{
puts("-- before return");
if( !SDLNet_SocketReady(GLB_SOCK_SS) )
{
return ;
}
puts("-- before receive_data_from_server()");
receive_data_from_server() ;
}
//==================================================================
//
// receive_data_from_server/0 :: First 4 bytes of "Payload" are eql to length of rest of Payload
//
//==================================================================
void receive_data_from_server()
{
My_string payload ;
MY_ALLOC( payload , MAXLEN )
int ncnt; // : Slava
uint32_t nreply , req_index , rep_index ;
uint32_t aallocated, ffreed ;
byte err[100] ;
bool bExitFlag = false;
puts("30001") ;
payload.len = 0 ;
if( get_payload(&payload) == -1 )
goto quit ;
UA_REQUEST*req_arr = GLB_ARRAY__UA_REQ ;
SS_REPLY*rep_arr = GLB_ARRAY__SS_REPLY ;
puts("30002") ;
// printf( "rep_type :: %u \nreq_id :: %u \n" , payload.c_str[0] , SDLNet_Read32( payload.c_str+1 ) ) ;
uint8_t rep_type = payload.c_str[0] ;
if( (rep_type == 1)
|| (rep_type == 3)
|| ( rep_type==4 )
) /*ie req_id == req_arr index*/
{
puts("30003") ;
req_index = SDLNet_Read32( payload.c_str+1 ) ;
nreply = payload.len-5 ;
ncnt = SDLNet_TCP_Send(
SOCK_UA( req_arr,req_index)
, payload.c_str+5 , nreply
) ;
if(ncnt < nreply)
{
sprintf((char*)err , "ERR__SOCK_WRITE :: bytes to be written: %u ;; actual num:: %u" , nreply , ncnt ) ;
log_msg(err , strlen((char*)err) , __LINE__ ) ;
handle_ua_sock_closed( req_arr , req_index ) ;
}
}
else if( payload.c_str[0] == 2 ) /* < req_id == "url_adler32" > */
{
puts("30004") ;
uint32_t url_adler32 = SDLNet_Read32( payload.c_str+1 ) ;
for( req_index = 0 ; req_index<NUM_UA_SOCK ; req_index++ )
{
if(URL_ADLER32( req_arr , req_index) == url_adler32 )
{
puts("30005") ;
My_string reply_mstr ;
MY_ALLOC( reply_mstr , MAXLEN )
update_cache__and__read_in_mystr( payload.c_str+5 ,payload.len-5
,&reply_mstr ,req_index
) ;
nreply = reply_mstr.len ;
puts("30006") ;
ncnt = SDLNet_TCP_Send(
SOCK_UA( req_arr , req_index)
, reply_mstr.c_str // reply_mstr
, nreply
) ;
if(ncnt < nreply)
{
sprintf((char*)err , "ERR__SOCK_WRITE :: bytes to be written: %u ;; actual num:: %u" , nreply , ncnt ) ;
log_msg(err , strlen((char*)err) , __LINE__ ) ;
handle_ua_sock_closed( req_arr , req_index ) ;
}
else
reset_req_arr_element( req_index) ;
MY_FREE( reply_mstr )
bExitFlag = true; // : Slava
break;
}
}
if (!bExitFlag)
{
for( rep_index = 0 ; rep_index<NUM_SS_REPLY ; rep_index++)
if(STATUS( rep_arr , rep_index )==ST_EMPTY)
break ;
My_string*pdel_mstr = &(REPLY( rep_arr , rep_index )) ;
if(pdel_mstr->len)
pdel_mstr->len = 0 ;
append( pdel_mstr , payload.c_str+5 , payload.len-5 ) ;
puts("30007") ;
STATUS( rep_arr , rep_index ) = ST_OCCUPIED ;
}
} /*</ id_type != "socket"> */
quit:
MY_FREE( payload )
}
我还可以补充一点,应用程序甚至不会向浏览器发送需要的数据包。我使用 SoftPerfect 嗅探器来实现这个目标。
最佳答案
感谢您的回答,特别是 @n.m.. 我使用 Fiddler 和 SoftPerfect 嗅探器来发现我的错误。我的代码有错误。
谢谢大家,维亚切斯拉夫
关于c - 使用某些浏览器的网络应用程序出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27690670/
我的“登录”是在 IE 浏览器中进行的,登录后,如果我单击链接,它们就会在 Chrome 浏览器中打开。如何在同一个测试用例中将我当前的浏览器从 IE 切换到 Chrome。如果我创建一个 chrom
您好,我不明白在 Firefox 的内容属性中使用的特殊字符的不同显示行为。我已经剥离了一切并创造了一支笔: http://codepen.io/rpkoller/pen/Fbgav 在其“基本形式”
我正在研究 Spring Data REST,特别是 HAL 浏览器。我一直在关注 http://docs.spring.io/spring-data/rest/docs/current/refere
我正在使用工具提示,在 ie 上出现定位错误。我放了jquery浏览器代码 我的工具提示 $('.tooltip').tooltip({ position: "bottom center"
我应该如何处理蓝鸟协程中的错误? 我使用co in节点已有一段时间,它具有出色的捕获功能。 co(function*() { return new Promise(function(resol
package webviewbrowser; import java.util.List; import javafx.application.Application; import javafx.
我有一些 JavaScript 在同一域上的两个独立服务器之间共享请求。 .com 是 JavaScript 中域的要求吗? 在这种情况下,两台服务器都位于 .abc.tyy 域上,tyy 通常是 .
package webviewbrowser; import java.util.List; import javafx.application.Application; import javafx.
我正在尝试构建仍支持 NPAPI 的先前版本的 Chromium 浏览器。我已经获得了代码,并且可以使用 stand build 命令在我的 mac 上构建最新版本的 Chromium gclient
我环顾四周,找不到 browscap 的 Python 等效项(我在 PHP 中使用它来检测给定的用户代理字符串是什么浏览器。 我希望我不必自己写......:P 最佳答案 看看这个,它应该做你想要的
是否有任何 chrome 或 firefox 扩展允许 javascript 在客户端 PC 中创建写入文件? 最佳答案 你想做什么? HTML5 有一个 File API .这是最好的解决方案,因为
当我点击链接或刷新或关闭标签页时,我有这段代码会发出警报。 但我需要在关闭 窗口(选项卡)上仅 发出警报。怎么做? 我的网站上有很多外部和内部链接。
我目前正在尝试使用 Browserify + Angular,但我遇到了一个奇怪的问题。我在我的 Controller 的子目录中创建了一个名为 controllers/start-controlle
我正在为客户(项目已被接受,但现在是解释不同功能的问题)写一份详细的估算,以开发一个响应式布局的网站。 这不是我第一次进行此类开发,但这是一个关键客户,必须铺平道路。 布局将从 300px 宽度调整到
我在时事通讯上设计了一些黑底白字。由于时事通讯在打印时看起来不错且可读。我需要使布局和文本与浏览器中的内容相似。 通常情况下,黑色文本和无背景颜色是浏览器/网络邮件客户端的默认打印样式吗? 最佳答案
我有一个使用 GWT/mGWT 构建的移动友好网络应用程序。该应用程序有白色输入文本框和深灰色输入文本。但是,在 Android 浏览器上,文本显示为白色,因此是不可见的。我尝试的所有 CSS 都无法
我创建了一个带有选择输入的页面来更改正在使用的 jQuery UI 主题。当主题更改时,它会存储在 cookie 中。页面加载时,如果 cookie 存在,则恢复主题,否则加载默认主题。 当我使用 F
在我的 CSS 中,我使用了以下代码片段: word-break: break-word; -webkit-hyphens: auto; hyphens: auto; 渲染引擎如何知道在所有不同语言中
我的网络浏览器 Safari 有问题,我在 Chrome、FireFox 中测试了我的网站。 Safari 版本也是正确的,但是,当需要在 1920x1080 或更高分辨率下对其进行测试时,它无法正常
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我是一名优秀的程序员,十分优秀!