c++ socket 阻塞recv()接收360浏览器http请求时不返回或返回很慢 [问题点数:20分]

Bbs1
本版专家分:0
结帖率 92.31%
Bbs1
本版专家分:10
Bbs5
本版专家分:4405
Bbs5
本版专家分:2083
Bbs5
本版专家分:2083
JAVA实现的简单的web服务器
简单web服务器,<em>接收</em><em>http</em>的Get<em>请求</em>并简单分析,并<em>返回</em>相应的html页面或图片
Linux下的Socket编程实例(阻塞和非阻塞)
Linux下基于C/C++的Socket的<em>阻塞</em>和异步编程实例
一个使用C语言socket发送http请求的例子
这是一个linux下使用C的标准<em>socket</em>,进行<em>http</em>访问的例子。通过<em>socket</em>发送get<em>请求</em>,从中国天气网获得指定城市的天气。 该例子在ubuntu 14.04和AM3358的嵌入式linux3.14下实际测试可用。 如果需要在嵌入式linux下使用,需要修改Makefile文件的CC和LINK项,指向相应的交叉编译器。
http发送请求获取返回结果
<em>http</em>发送<em>请求</em>获取<em>返回</em>结果
Http请求缓冲类 , 有效降低HTTP访问频率
通过将最近访问结构放入内存的方式 , 节约对网络的访问频率 .
java后台发起http请求 处理中文乱码
直接拷到项目就可以用,跨服务器<em>请求</em>,并处理<em>返回</em>结果中的中文
http请求,xml格式
<em>http</em><em>请求</em>,传输方式以xml格式,可以以文件的方式传输,或以拼接字符串的方式<em>请求</em>
阻塞 recv返回10035
我程序为什么经常出现这个问题啊!<em>阻塞</em> <em>recv</em>还是<em>返回</em>10035 。
nodejs的http请求html/css/js
nodejs系列学习:<em>http</em><em>请求</em>html/css/js-----(二)
C++实现http的post发送接收数据以及xml解析
<em>http</em>的post发送<em>接收</em>数据以及xml解析:用winInet来实现<em>http</em>的post<em>请求</em><em>接收</em>数据,解析xml的数据
socket模拟HTTP协议头
套接字方式模拟HTTP<em>请求</em>,向WEB服务器发送协议头,并<em>接收</em><em>返回</em>信息。
VC++ 6.0 TCP 通讯实例(服务器端和客户端)
服务器端流程: 1、创建套接字(<em>socket</em>)。 2、将套接字绑定到一个本地地址和端口上(bind)。 3、将套接字设为监听模式,准备<em>接收</em>客户<em>请求</em>(listen)。 4、等待客户<em>请求</em>到来;当<em>请求</em>到来后,接受连接<em>请求</em>,<em>返回</em>一个新的对应于此次连接的套接字(accept)。 5、用<em>返回</em>的套接字和客户端进行通信(send/<em>recv</em>)。(在线程中进行) 6、<em>返回</em>,等待另一客户<em>请求</em>。 7、关闭套接字。 客户端流程: 1、创建套接字(<em>socket</em>)。 2、向服务器发出连接<em>请求</em>(connect)。 3、和服务器端进行通信(send/<em>recv</em>)。 4、关闭套接字。
Koa2 实现api服务器 发请求接收Json
确保node npm 都已安装,直接在工程目录下npm start即可,网页访问<em>http</em>://localhost:3000/test/test可看收到的json 推荐jsonview插件
Socket send函数和recv函数详解
不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。
VC通过HttpGet和HttpPost方式与WebService通信,解析返回的Json
MFC程序中通过HttpGet和HttpPost方式向WebService发送<em>请求</em>,WebService以Json的方式<em>返回</em>数据,MFC程序解析Json,得到指定数据。
linux网络编程send/recv产生的errno详解
详细介绍send或<em>recv</em>系列函数产生的errno情况
Linux系统调用-- recv/recvfrom 函数详解
从套接字上<em>接收</em>一个消息。对于<em>recv</em>from ,可同时应用于面向连接的和无连接的套接字。<em>recv</em>一般只用在面向连接的套接字,几乎等同于<em>recv</em>from,只要将<em>recv</em>from的第五个参数设置NULL。 如果消息太大,无法完整存放在所提供的缓冲区,根据不同的套接字,多余的字节会丢弃。 假如套接字上没有消息可以读取,除了套接字已被设置为非<em>阻塞</em>模式,否则<em>接收</em>调用会等待消息的到来。
Socket服务端客户端以tcp/ip协议发送接收报文
实现了java <em>socket</em>编程基于tcp/ip协议的简单服务端,客户端通信,用于发送报文,<em>接收</em>解析报文。
python socket recv接收网络数据返回空字符串
在与服务器建立连接后通过rnserverSocket = <em>socket</em>.<em>socket</em>(<em>socket</em>.AF_INET, <em>socket</em>.SOCK_STREAM)rn<em>接收</em>来自后台的消息,rn通过<em>socket</em>.<em>recv</em>(n)<em>接收</em>消息,有时候会<em>接收</em>到空字符串,但通过抓包发现服务器端发送过来的并非空字符串。rn但如果在<em>recv</em>前面先sleep(10),再<em>接收</em>就没有这个问题, 很奇怪,感觉像是<em>recv</em>太快了... 我没有设置<em>socket</em>选项,应该默认是<em>阻塞</em>io,求解释。rnrn************ 但如果sleep(2),还是有可能出现,只是不再最开始出现。rnrnclient端代码如下:rnrn[code=python]rnimport <em>socket</em>, sys, time, structrnimport pdbrnrnserverSocket = <em>socket</em>.<em>socket</em>(<em>socket</em>.AF_INET, <em>socket</em>.SOCK_STREAM)rnrn#------------------------------------------------------rn# Print the struct.pack Binary content as Hexrn# 16 bytes per linern#------------------------------------------------------rndef PrintBinHex(s, flag):rn global dbugFlagrn # dbug < 0: accurate outputrn # dbug >=0: range output rn rn if(dbugFlag < 0):rn if(flag != -1*dbugFlag):rn returnrn elif(flag < dbugFlag):rn returnrn rn bytes = bytearray(s)rn cnt = 0rn for i in bytes:rn cnt=cnt+1rn print "%02x" % i,rn rn if (cnt%16) == 0:rn print "\n"rn elif (cnt%8) == 0:rn print " ",rn printrnrnrn#------------------------------------------------------rn# InitFrontEndrn# connect to the targetrn#------------------------------------------------------rndef InitFrontEnd():rn print "Connect to host..."rn try:rn port = 123456rn host = "192.168.1.100"rn serverSocket.connect((host, port))rn rn except <em>socket</em>.error, e:rn print "Connection error: %s" % ern sys.exit(1)rn else:rn print "Connection succ..."rnrn#------------------------------------------------------rn# RecvNrn# <em>recv</em> N bytes to targetrn#------------------------------------------------------rndef RecvN(<em>socket</em>, n):rn return <em>socket</em>.<em>recv</em>(n)rnrnrn#------------------------------------------------------rn# Recv Fake Rsp Info from serverrn# get only 1 int16 first for msg len and then msg body from server to test the connectionrn#------------------------------------------------------rndef RecvWholeMsgFromServer():rn global serverSocketrn #print "try to get... "rn #pdb.set_trace()rn lenBuf = ''rn length = 0rn try:rn rn lenBuf = RecvN(serverSocket, 2) rn length, = struct.unpack('!H', lenBuf) rn bodyBuf = RecvN(serverSocket, length-2)rn Msg = lenBuf + bodyBufrn except : rn print "****** Except Length : %d *******\n" %lengthrn PrintBinHex(lenBuf, 1)rn raisernrnrn#------------------------------------------------------rn# Get Msg from Serverrn# RecvLooprn#------------------------------------------------------rndef RecvLoop():rn x = 1rn while x , line 105, in RecvNrn return <em>socket</em>.<em>recv</em>(n)rnValueError: negative buffersize in <em>recv</em>rn
HTTP 请求工具类(含HTTPS)(参数、二进制流、文件、图片)
HTTP <em>请求</em>工具类(含HTTPS)(参数、二进制流、文件、图片)
关于recv函数在不知道接收数据大小时如何申请buffer
关于<em>recv</em>函数在不知道<em>接收</em>数据大小时如何申请buffer
socket 监听接受文件,server和client
通过<em>socket</em> <em>阻塞</em>式监听接受<em>请求</em>,实现数据<em>接收</em>与发送
HTTP请求返回状态码全面解析
HTTP<em>请求</em><em>返回</em>状态码全面解析
java发送http请求
java向服务器发送<em>http</em><em>请求</em>,<em>返回</em><em>请求</em>数据
Java发送Http请求,解析html返回
Java发送Http<em>请求</em>,解析html<em>返回</em>
360浏览器4.0
<em>360浏览器</em>4.0 带<em>返回</em> 最好用 比<em>360浏览器</em>最新版本好用,因为他有<em>返回</em>这个快捷键
MockServer
用户可以自定义在本机发送HTTP<em>请求</em>时,某些URL所<em>返回</em>的响应。支持HTTPS。
基于HTTP、NIO、单线程实现浏览器并发非阻塞访问服务器文件
单线程实现基于HTTP NIO的服务器,浏览器并发浏览或者下载服务器文件.
模拟HTTP请求-httpdebug
模拟HTTP<em>请求</em>-<em>http</em>debug 很好的<em>http</em><em>请求</em>工具 ,方便模拟<em>请求</em><em>返回</em>数据报文
socket http/https 模拟登录 请求页面等
<em>socket</em> <em>http</em>/<em>http</em>s 模拟登录 <em>请求</em>页面等
socket 服务端
<em>socket</em> 服务端,<em>接收</em>客户端发送的DataSet,并<em>返回</em>已<em>接收</em>信息。
关于VC++通过HTTP上传数据的类 CHttpSocket 的使用说明
关于VC++通过HTTP上传数据的类 CHttpSocket 的使用说明.写好的一个类,用于HTTP上传数据包括 GET方法 及POST的两种情况全都有了,直接使用即可,里面有详细的使用说明文档.如有任何使用上的问题,请指正
使用Socket 完成HTTP post方式的文本及文件上传 demo
请查参看文档:<em>http</em>://blog.csdn.net/sinat_29398599/article/details/52908574
HTTP返回状态值详解
当用户点击或搜索引擎向网站服务器发出浏览<em>请求</em>时,服务器将<em>返回</em>Http Header Http头信息状态码
Android向Java后台发送请求返回Json数据
代码解释:<em>http</em>://write.blog.csdn.net/postedit/55048571
socket关闭后为什么recv返回
程序中实现客户端和服务器端功能,<em>socket</em>均使用<em>阻塞</em>方式<em>接收</em>和发送。客户端主动关闭本次<em>socket</em>,<em>recv</em>立即从<em>阻塞</em>方式<em>返回</em>。而在服务器端,<em>socket</em>由accept获得,参数均设置成和客户端<em>socket</em>一样,程序运行时,服务器端自动关闭<em>socket</em>,程序仍<em>阻塞</em>在<em>recv</em>函数中,请各位大拿帮忙分析一下是什么问题,同样的程序在win32下正常。
C++实现的服务器post访问并实现JSON数据流解析
本代码借鉴了网上其他大神用C++实现的post方法,自己经过修改并添加了对<em>接收</em>的json数据流进行了解析的功能
TCP socket recv返回-1,WSAGetLastError()返回10054或10053
我的程序跑的是个播放器,然后连接一个摄像头进行播放。现在是拔掉网线后出错,<em>recv</em><em>返回</em>-1,WSAGetLastError()<em>返回</em>10054或10053。从断网线和程序报错是有个间隔时间的。我想问这个时间是哪里设置的?
request的63个方法
equals "它是用于进行两个对象的比较的,是对象内容的比较,当然也能用于进行对象参阅值的比较。 " getAttribute "<em>返回</em>由name指定的属性值,该属性不存在时<em>返回</em>null。 " getAttributeNames "<em>返回</em>request对象的所有属性名称的集合。 " getAuthType "<em>返回</em>用来保护servlet的认证方法的名称,未受保护时<em>返回</em>null。 " getCharacterEncoding "<em>返回</em><em>请求</em>中的字符编码方法,可以在response对象中设置。 " getClass "运行程序时动态加载的 " getContentLength "<em>返回</em><em>请求</em>的BODY的长度,不能确定长度时<em>返回</em>-1。可以在response中设置。 " getContextPath "<em>返回</em><em>请求</em>的路径。 " getContentType "<em>返回</em>在response中定义的内容类型。 " getCookies "<em>返回</em>客户端所有的Cookie的数组。 " getDateHeader "<em>返回</em>指定名称的Data类型的HTTP头的信息。 " getHeader "<em>返回</em>指定名称的HTTP头的信息。 " getHeaderNames "<em>返回</em>所有HTTP头的名称的集合。 " getHeaders "<em>返回</em>指定HTTP头的所有值的集合。 "
moco模拟后台json
项目里需要使用Mock Server(Mock Server是做什么的,您可以Google一下),Moco是其中的一种
socket发送http请求
在linux环境下,使用<em>socket</em>发送和<em>接收</em><em>http</em><em>请求</em>的例子
HTTP Server代码(C#)
简单的HTTP Server:实现tcp<em>请求</em>并<em>返回</em>html
Postman for Mac
mac 系统下<em>http</em> get | post <em>请求</em>,<em>返回</em>数据监控。
python+http+json
用python实现通过<em>http</em><em>请求</em><em>返回</em>json的处理结果
Httpdemo.zip
通过xutil完成<em>http</em><em>请求</em>。将<em>返回</em>的信息打印出来。
android接收json例子struts2Action返回json格式数据
androind <em>http</em> <em>请求</em> struts2 action <em>返回</em> json 数据 例子
springboot图片代理,请求url传入img返回字节流图片
<em>请求</em>一个controller路径 传入img的路径作为参数 <em>返回</em>字节流图片 直接映射到页面
HttpURLConnection获取json数据解析
使用HttpURLConnection<em>请求</em>链接,并解析View上的json数据字符串,并且使用Handler;使用JsonObject来解析数据
不知道recv大小时如何设置buffer大小接收图像
关于<em>recv</em>函数buffer大小的设置,当不知道数据长度时如何设置buffer长度,以及buffer长度对实际<em>接收</em>长度的影响。
springMVC接收返回参数各种情况整合
主要是工作中遇到的一些springMVC前台往后台传递参数的一些不同形式的后台的解决方式
socketrecv返回-1时,的报错,
rn代码如下:rn[code=c]rnDWORD WINAPI CIOCPServer::ThreadConserPoolProc(LPVOID lpParam)rnrn //连接主服务器的线程rn CIOCPServer* pcs=(CIOCPServer*)lpParam;rn WSADATA data = 0;rn SOCKET m_Socket;rn <em>recv</em>Msg msgg;rn rn TCHAR szBuf[MAX_BUF_SIZE] = 0;rn tryrn rn memset(msgg.sendtype,0,2);rn memset(msgg.sendno,0,30);rn memset(msgg.seda,0,100);rn memset(msgg.sedb,0,100);rn memset(msgg.sedc,0,100);rn memset(msgg.sedd,0,100);rn memset(msgg.sede,0,100);rn memset(msgg.sedf,0,100);rn memset(msgg.sedg,0,100);rn memset(msgg.sedh,0,100);rn memset(msgg.sedi,0,100);rn rn if(WSAStartup(MAKEWORD(2, 2), &data))rn return FALSE;rn if ( LOBYTE(data.wVersion) !=2 || HIBYTE(data.wVersion) != 2 )rn rn WSACleanup();rn return FALSE;rn rn m_Socket = <em>socket</em>(AF_INET , SOCK_STREAM , IPPROTO_TCP);rn sockaddr_in server;rn server.sin_family = AF_INET;rn server.sin_port = htons(9527);rn server.sin_addr.s_addr = inet_addr("127.0.0.1");rn if (connect(m_Socket, (struct sockaddr *)&server, sizeof(struct sockaddr)) == SOCKET_ERROR ) rn rn AfxMessageBox(_T("连接失败,请重试!"));rn WSACleanup();rn return FALSE;rn rn pcs->skt=m_Socket;rn memcpy(msgg.sendtype, "a", sizeof("a") );rn //-----------------unicode下:CString转char[]的方法-------------------------------------rn WideCharToMultiByte(CP_ACP,0,pcs->pcno,pcs->pcno.GetLength(),msgg.sendno,sizeof(msgg.sendno),NULL,NULL);rn ::send(pcs->skt,(char *)&msgg, sizeof(msgg),0);rn while(TRUE) rn rn memset(szBuf,0,MAX_BUF_SIZE);rn <em>recv</em>Msg msggrvd;rn memset(msggrvd.sendtype,0,2);rn memset(msggrvd.sendno,0,30);rn memset(msggrvd.sendskt,0,10);rn memset(msggrvd.seda,0,100);rn memset(msggrvd.sedb,0,100);rn memset(msggrvd.sedc,0,100);rn memset(msggrvd.sedd,0,100);rn memset(msggrvd.sede,0,100);rn memset(msggrvd.sedf,0,100);rn memset(msggrvd.sedg,0,100);rn memset(msggrvd.sedh,0,100);rn memset(msggrvd.sedi,0,100);rnrn int iRet = <em>recv</em>(m_Socket, (char *)szBuf, MAX_BUF_SIZE, 0);rn if ( iRet > 0 ) rn rn memcpy(&msggrvd,szBuf,sizeof(szBuf));rn CIcpwes *opw=new CIcpwes(pcs,msggrvd);rn QueueUserWorkItem(WorkThreadPoolProc, opw, WT_EXECUTELONGFUNCTION);rn rn elsern rn // WSACleanup();rn memset(szBuf,0,MAX_BUF_SIZE);rn CString lstxt;rn lstxt="服务器断开连接,请重新启动";rn pcs->m_pWnd->SendMessage(WM_ADD_MSG,(DWORD)0,(LPARAM)(LPCTSTR)lstxt);rn break;rn rn rnrn close<em>socket</em>(m_Socket);rn return TRUE;rn rn catch(_com_error e)rn rn CString errormessage;rn errormessage.Format(_T("连接数据库失败!\r\n错误信息:%s"),e.ErrorMessage());rn AfxMessageBox(errormessage);///显示错误信息rn return TRUE;rn rnrn[/code]rnrn服务端,客户端,都在BUG状态,我突然停掉服务端时,客户端会报以下错误:rn1:有时报:Run-Time Check Failure #2 - Stack around variable 'szBuf' was corruptedrn2:有时报:Run-Time Check Failure #2 - Stack around variable 'msggrvd' was corruptedrnrn请高手指点,始终找不到原因rn
socket recv 返回-1什么原因?
客户端 循环向服务端send 数据封包,服务端 循环<em>接收</em>数据封包,<em>recv</em> <em>返回</em>值有时候一直出现-1,后面的封包还没<em>接收</em>完,等一会后,<em>recv</em> 又能<em>接收</em>到数据了,过一会又会出现<em>recv</em><em>返回</em> -1,然后接着能继续<em>接收</em>数据,直到数据<em>接收</em>完。为什么在连续<em>接收</em>数据封包的过程中,<em>recv</em> 会出现<em>返回</em>值为-1 的情况?
http请求返回404
[code=java]rnrn@Controllerrn@RequestMapping("/infopublish")rnpublic class hello rn rn @RequestMapping(value="/addsubscribe",method=RequestMethod.GET,headers="Accept=text/plain")rn public @ResponseBody String AddSubscribe(@RequestParam String userInfo)rn return "add subscribe successed";rn rnrn @RequestMapping(value="/getsubscribeinfo",method=RequestMethod.GET,headers="Accept=text/plain")rn public @ResponseBody String GetSubscribeInfo(@RequestParam String userInfo)rn return "get subscribeinfo successed";rn rnrnrn[/code]rnrn我在一个controller中写了2个方法,调用的时候分别用下面两个地址。第一个地址能成功<em>返回</em>字符串,第二个却<em>返回</em>404rnlocalhost:8080/GJAQ_service/infopublish/addsubscribe?userInfo=haharnlocalhost:8080/GJAQ_service/infopublish/getsubscribeinfo?userInfo=haharnrn并且第二个<em>返回</em>404后,再调用第一个也是404,请问这个是什么回事啊?
vc++ socket recv超时返回
int nNetTimeout=3000;rnsetsockopt(sock,SO_RCVTIMEO, SO_RCVTIMEO,(char *)&nNetTimeout,sizeof(int));rnret = <em>recv</em>(sock, pageBuf + bytesRead, m_nContentLength - bytesRead, 0);rn这样可以超时<em>返回</em>吗,为什么我的程序还是会卡死在里面。
Jquery $.ajax 请求部署在 Tomcat报HTTP 406上解决方法
Jquery $.ajax <em>请求</em>部署在 Tomcat报HTTP 406上解决方法
ajax重写方法搭配后台filter返回status实现ajax请求跳转登录页面
ajax重写方法搭配后台filter<em>返回</em>status实现ajax<em>请求</em>跳转登录页面
c# Socket编程
c#简单的<em>socket</em> 编程 客户端发送字符串 服务端<em>接收</em><em>返回</em>信息
IOS stream模拟http请求获取数据
ios 有三个demo 1.NSURL 下载网络图片(block和delegate两种方式) 2.NSURLSession 下载网络图片,<em>请求</em>json数据(自己封装的网络block) 3.利用 NSstream 来模拟<em>http</em><em>请求</em>获取数据
Java Web简单例程——MyWebProject
本例程包含一个TestServlet,用于<em>接收</em>POST<em>请求</em>,访问本地MySQL数据并<em>返回</em>对应消息。
平台java前端ajax,json请求
js ajax发起post<em>请求</em>,发送json数据。平台<em>接收</em>并<em>返回</em>json数据,html显示<em>返回</em>结果
socket客户端请求
用java写的<em>socket</em>客户端,实用于初学者,了解java用<em>socket</em>方法发送<em>请求</em>,<em>接收</em>服务器端的<em>返回</em>信息.......
网络编程与开发技术 课程ppt
以套接字为例,在<em>阻塞</em>模式下,利用TCP协议发送一个报文时,如果低层协议没有可用空间来存放用户数据,则应用进程将<em>阻塞</em>等待直到协议有可用的空间。 2、而在非<em>阻塞</em>模式下,调用将直接<em>返回</em>而不需等待。在应用进程调用<em>接收</em>函数<em>接收</em>报文时,如果是在<em>阻塞</em>模式下,若没有到达的数据,则调用将一直<em>阻塞</em>直到有数据到达或出错;而在非<em>阻塞</em>模式下,将直接<em>返回</em>而不需等待。 3、对于UDP协议而言,由于UDP没有发送缓存,因此所有UDP协议即使在<em>阻塞</em>模式下也不会发生<em>阻塞</em>。 4、对于面向连接的协议,在连接建立阶段,<em>阻塞</em>与非<em>阻塞</em>也表现不一。在<em>阻塞</em>模式下,如果没有连接<em>请求</em>到达,则等待连接调用将<em>阻塞</em>直到有连接<em>请求</em>到达;但在非<em>阻塞</em>模式下,如果没有连接<em>请求</em>到达,等待连接调用将直接<em>返回</em>。
socket编程中select的使用
<em>socket</em>编程中select的使用Select在Socket编程中还是比较重要的,可是对于初学Socket的人来 说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、<em>recv</em>或<em>recv</em>from这样的<em>阻塞</em>程序(所谓<em>阻塞</em>方式 block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被<em>阻塞</em>,函数不能立即<em>返回</em>)。可是使用 Select就可以完成非<em>阻塞</em>(所谓非<em>阻塞</em>方式non-block,就是进程或线程执行此函数时不必非要等待事件的发生,一旦执行肯定<em>返回</em>,以<em>返回</em>值的不 同来反映函数的执行情况,如果事件发生则与<em>阻塞</em>方式相同,若事件没有发生则<em>返回</em>一个代码来告知事件未发生,而进程或线程继续执行,所以效率较高)方式工作 的程序,它能够监视我们需要监视的文件描述符的变化情况——读写或是异常。下面详细介绍一下!
C# 中做生成ajax的html代码
在用C#做ajax的时候不用郁闷的去拼写Html代码了
Java后端HttpClient Post提交文件流 及服务端接收文件流
HttpClient Post提交多文件及多个普通参数,已经封装成工具类。 需传入 要<em>请求</em>的url 普通参数map 例 map.put("param1","张三"); 需要传入的文件流map 其中key为文件名 服务端<em>接收</em>无乱码。
http请求之response详解
很详细的<em>http</em>响应详解,非常不错的一个思维导图。。。
http接口返回json,springmvc+mybatis+oracle
自己写的一个小接口,改个数据库配置就可以跑起来,包含了测试的客户端,没有多少注释,这个简单应该不难看懂
阻塞socket上,recv和send会返回0值吗?
经常可以看到类似的代码:rnrnret = <em>recv</em>(sClient, szBuffer, DEFAULT_BUFFER, 0);rnif (ret == 0) rn break;rnelse if (ret == SOCKET_ERROR)rnrn printf("<em>recv</em>() failed: %d\n", WSAGetLastError());rn break;rnrn我想,因为这里的SOCKET是<em>阻塞</em>的,要是收不到数据的话,应该会一直停在那里,为什么会有0值<em>返回</em>呢?要是有,什么情况下会发生这种情况?
网页获取JSON中文返回乱码解决方案(java)
懒得考虑各种字符编码问题了,用了一个比较暴力的方法,不只中文,所有双字节文字都可以避免乱码问题。
发送Post请求,内容格式为xml,并获取响应内容
发送Post<em>请求</em>,内容格式为xml,并获取响应内容
HttpGET获取网络数据不断刷新页面显示
使用HttpGET从网络上获取数据并实时的刷新数据显示到界面上
js对ajax返回数组的处理介绍
本篇文章主要是对js对ajax<em>返回</em>数组的处理进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助
IIS简单模拟(C#)
IIS基本原理: 浏览器发出<em>请求</em>,服务器处理<em>请求</em>,服务器<em>返回</em>响应 即 <em>请求</em>处理响应 1.IIS服务端绑定IP和端口 2.Socket开始侦听 3.线程池开启循环<em>接收</em>客户端<em>请求</em> 4.当<em>接收</em>到客户端<em>请求</em>时, 产生一个新的代理<em>socket</em>和客户端进行通信(原来的侦听端口的<em>socket</em>释放,继续侦听其他客户端的<em>请求</em>)同时开启一个新的线程<em>接收</em>客户端消息 5.分析客户端的<em>请求</em>报文,对<em>请求</em>的文件<em>返回</em>响应报文 <em>http</em>/1.1中的长连接的意思是一个页面的访问在一个<em>socket</em>中完成 <em>http</em>/1.0的处理是处理完一个<em>请求</em>,马上关闭,不会保持连接
oKHttp封装2
get<em>请求</em>和post<em>请求</em>,上传文件和下载文件时<em>返回</em>进度,<em>返回</em>的JSON数据转化成实体对象,访问服务器是异步<em>请求</em>,将<em>请求</em>结果回调到主线程
联通短信网关模拟器
联通短信网关模拟器 包括功能:<em>接收</em> 发送 deliver 并且<em>接收</em>submit时可以直接<em>返回</em>report
soapUI输入中文显示为乱码,响应报文中文乱码问题解决方法.txt
soapUI输入中文显示为乱码 响应报文中文乱码问题解决方法
sql exists和not exists用法
使用EXISTS(或NOT EXISTS)关键字引入一个子查询时,子查询实际上不产生任何数据;它只<em>返回</em>TRUE或FALS值。 指定一个子查询,检测行的存在。 如果子查询包含行,则<em>返回</em> TRUE IN效率要差(<em>返回</em>子查询)
VC通过Http协议Get或Post方式与WebService通信,解析返回的Json
本资源是一个封装类,采用异步方式解决了Wininet不能设置超时的问题,当前异步采用C++11线程库及同步方式,可修改为MFC工作线程后在VS2012以下版本使用。JSON解析库采用JSONCPP。调用方式参考: CWininetHttp MyHttp; bool bSucess=false; iMyHttp.RequestJsonInfo((LPCTSTR)m_strUrl,Hr_Post,"Content-Type:application/x-www-form-urlencoded",strData,m_nTimeOut); if (!MyHttp.ParseJsonInfo()) { return OutPutFailInfo(MyHttp.GetErrInfo()); } MFC程序中通过HttpGet和HttpPost方式向WebService发送<em>请求</em>,WebService以Json的方式<em>返回</em>数据,MFC程序解析Json,得到指定数据。
AJAX 想Struts2后台传送Json数据并向前台返回Json格式的数据
三种方式通过Struts后台传送数据,Struts标签库,form表单,ajax
Netty同步等待数据返回实例代码
Netty同步等待数据<em>返回</em>实例代码
C#中用SOCKET发送HTTP请求小例
C#中用SOCKET发送HTTP<em>请求</em>小例 自行组织<em>http</em>报文,报显示服务器反馈回来的报头与报体信息。 ------------- HTTP/1.1 200 OK Date: Mon, 08 Dec 2008 14:20:51 GMT Server: BWS/1.0
Netty4.0 http案例
Netty4.0实现<em>http</em>服务,客户端通过<em>http</em><em>请求</em>,服务器进行业务处理,<em>返回</em>响应,交互采用json格式
recv()不返回是怎么回事
我有这样一段代码rnrnchar buf[2048]=0;rn int nRecv=0;rn dorn rn //print received datarn nRecv=<em>recv</em>(cs,buf,sizeof(buf),0);rn printf("%s",buf);rn ::ZeroMemory(buf,sizeof(buf));rn while(nRecv>0);rnrn能够正常<em>接收</em>数据,但是<em>接收</em>完之后,就一直等待,不<em>返回</em>,应该是停在<em>recv</em>()那了,不知道是怎么回事,麻烦高手解决一下
利用socket连续发送与连续接收数据
刚刚学习<em>socket</em>的时候编写的程序,可以实现客户端连续向服务器发送三个数据,服务器端连续接受三个数据并<em>返回</em>给客户端处理结果
c++语言http发送接收小程序
用c++实现的<em>http</em>发送<em>接收</em>程序,程序简单,直接看main函数就能知道怎么用,方便初学者使用
JAVA服务器
运行代码后,可用浏览器访问,并将<em>请求</em>到的对象(图片或网页)进行显示。也可以运行Client,输入命令,得到标准的HTTP<em>返回</em>格式信息及<em>请求</em>的文件。
C语言实现的HTTP请求
C语言实现的HTTP<em>请求</em>,重写Http协议,并发送<em>http</em>报送的源文件
http通信代码(客户端和服务器)
该小程序代码提供curl接口,实现<em>http</em>客户端,进行消息的发送及<em>返回</em>消息的解析;使用mongoose实现简单的<em>http</em>服务器,<em>接收</em>客户端的<em>请求</em>并<em>返回</em>响应。(其中mongoose部分代码出自其他地方)
用Socket写的HTTP类,商业级C++源码。
此HTTP类使用C++编写,用Socket技术实现HTTP,直接在成熟商业项目中抽取出来的,经过了多年的使用和改善,已经非常稳定,是学习Socket和HTTP的优秀资源,同时也是可以直接拿去在实际项目中的使用模块。 功能: 1.实现了HTTP的GET、POST操作。 2.自动管理Cookies,也可以通过接口控制Cookies。 3.自动进行编码转换。 说明: 1.使用此类之前必须调用Init接口进行初始化。 2.如果中文出现乱码,请在调用Get、Post之前调用SetCodePage设置编码。 3.如需要封装好的HTTPS、异步HTTP、完成端口TCP等商业源码,请联系作者。
java post文件流的操作
适用于javapost 文件流提交和<em>接收</em>数据
【求助】客户端网络断开,服务端recv一直阻塞返回
客户端网络异常断开,没有shutdown <em>socket</em>。此时服务端的<em>recv</em>期待的是能<em>返回</em>错误的,可是实际并不是这样,而是一直<em>阻塞</em>在那里,无<em>返回</em>。 该如何是好呢?
okHttp访问返回JSON,XML解析实例
WebView布局使用,okHTTP访问解析服务器<em>返回</em>的json/xml数据
使用WebService的方法返回xml格式的数据
使用webservice的方法调用数据库中的数据,然后<em>返回</em>的数据格式的xml.直接显示成xml格式
socket怎么能使recv阻塞
部分代码:rnvoid CWSN_serverDlg::OnTcpConnect() //tcp客户端连接rnrn// TODO: Add your control notification handler code herernif (m_sockType == SOCK_TCP_CLIENT)rnrnUpdateData(TRUE);rnDWORD servIp;rnCString ip;rnu_short servPort;rnservPort =(u_short) m_tcpRemotePort;rnm_tcpRemoteIp.GetAddress(servIp);rnm_tcpRemoteIp.GetWindowText(ip);rnm_status = "Connecting "+ip;rnrnGetDlgItem(IDC_STATUS)->SetWindowText(m_status);rnUpdateData(FALSE);rnrnSOCKADDR_IN servAddr;rnservAddr.sin_family = AF_INET;rnservAddr.sin_addr.S_un.S_addr=htonl(servIp);rnservAddr.sin_port = htons(servPort);rnrnint conn=connect(m_hostSock,(sockaddr *)&servAddr,sizeof(SOCKADDR_IN));rnif(conn==SOCKET_ERROR) ///////////////////////////////////rnrnGetDlgItem(IDC_STATUS)->SetWindowText("Connect fail");rnAfxMessageBox("_SendMsgThread Connect错误!"+GetError(GetLastError()));rnreturn ; rnrnm_status = "Connect to "+ip;rnGetDlgItem(IDC_STATUS)->SetWindowText(m_status);rnrnDWORD dwThreadId;rnm_hThread = CreateThread(NULL, 0, SendAndRecvThread, this,0, &dwThreadId);rnCloseHandle(m_hThread);rnrnrnrnrnrnDWORD CWSN_serverDlg::SendAndRecvThread(void *pParam)rnrnCWSN_serverDlg *pClient = (CWSN_serverDlg *)pParam;rnSOCKET hostSock = pClient->m_hostSock;rnrnFD_SET writefd;rnFD_SET readfd;rnrnwhile (1)rnrnFD_ZERO(&writefd);rnFD_ZERO(&readfd);rnFD_SET(hostSock, &writefd);rnFD_SET(hostSock, &readfd);rnrnint reVal = select(0, &readfd,&writefd, NULL, NULL);rnif (SOCKET_ERROR == reVal)rnrnAfxMessageBox("select error");rnreturn 0;rnrnelse if (reVal > 0)rnrnif (FD_ISSET(hostSock, &writefd))rnrn//调用发送rnif (FALSE == pClient->SendMsg())rnrnAfxMessageBox("发送失败");rnreturn 0;rnrnrnif (FD_ISSET(hostSock, &readfd))rnrnif (FALSE == pClient->RecvData())rnrnAfxMessageBox("<em>接收</em>失败");rnreturn 0;rnrnrnrnSleep(500);rnrnreturn 0;rnrnrnrnBOOL CWSN_serverDlg::RecvData()//<em>接收</em>函数rnrnchar flag[FLAG]=0; rnCString ip;rnint tag=0;rnint nErrCode;rnBOOL reVal = TRUE;rnrnchar buff[100]=0;rnCString msg;rnint ret=0;rnfor(;;)rnrnret=<em>recv</em>( m_hostSock,buff,100,0);rnif(ret==0)rnbreak;rnm_disMsg+=buff; rnAfxMessageBox(m_disMsg);//这儿能提示<em>接收</em>的数据,表明收到了数据rnrnGetDlgItem(IDC_MESSAGE)->SetWindowText(m_disMsg);///就是这个地方,程序好像根本就不执行到这,不知道为什么rnUpdateData(FALSE);rnrnreturn reVal;rnrnfor循环中调用<em>recv</em>()后,如果有数据,就<em>接收</em>数据。当没有数据时,好像就<em>阻塞</em>在那儿,等到下次有数据到来时,直接从此处的<em>recv</em>()执行。而不是重新从线程SendAndRecvThread(void *pParam)中调用RecvData(),要怎样才能使<em>recv</em>()不<em>阻塞</em>,当调用<em>recv</em>()没收到数据时,<em>返回</em>0?
recv调用返回SOCKET_ERROR时
我发现rn<em>recv</em>调用<em>返回</em>SOCKET_ERROR时rnWINDOWS任务管理器中的"内存使用"中的数字就会增加
CHttpFile的SendRequest不返回阻塞了!
我用WinInet连接自己的Isapi extension 当isa<em>返回</em>HSE_STATUS_SUCCESS时,SendRequest成功<em>返回</em>,可是当isa<em>返回</em>HSE_STATUS_SUCCESS_AND_KEEP_CON时,SendRequest<em>阻塞</em>。我需要保持连接,所以要<em>返回</em>HSE_STATUS_SUCCESS_AND_KEEP_CON,但是SendRequest<em>阻塞</em>了,后续操作就无法进行了。不知道各位大虾有何高见?
文章热词 神经网络循环请求 HTTP检测与数据挖掘 不可变深度理解 C/C++ C/C++培训
相关热词 c# http返回很慢 c++ http 请求返回乱码 c++ recv返回0 c++ recv tcp 一直返回 学习python时遇到的问题 人工智能培训不加密云盘
我们是很有底线的