tcp接受窗口会不会带来死锁? [问题点数:40分,结帖人bsnry]

Bbs4
本版专家分:1713
结帖率 94.74%
Bbs12
本版专家分:380812
Blank
状元 2017年 总版技术专家分年内排行榜第一
Blank
榜眼 2014年 总版技术专家分年内排行榜第二
Blank
探花 2013年 总版技术专家分年内排行榜第三
Blank
进士 2018年总版新获得的技术专家分排名前十
2012年 总版技术专家分年内排行榜第七
Bbs4
本版专家分:1713
Bbs1
本版专家分:22
Blank
红花 2009年6月 专题开发/技术/项目大版内专家分月排行榜第一
2009年5月 专题开发/技术/项目大版内专家分月排行榜第一
2009年4月 专题开发/技术/项目大版内专家分月排行榜第一
2009年3月 专题开发/技术/项目大版内专家分月排行榜第一
2008年12月 专题开发/技术/项目大版内专家分月排行榜第一
2004年5月 VC/MFC大版内专家分月排行榜第一
Blank
黄花 2008年9月 专题开发/技术/项目大版内专家分月排行榜第二
Blank
蓝花 2009年10月 专题开发/技术/项目大版内专家分月排行榜第三
2009年2月 专题开发/技术/项目大版内专家分月排行榜第三
Bbs9
本版专家分:86280
Blank
红花 2011年3月 C/C++大版内专家分月排行榜第一
2010年9月 C/C++大版内专家分月排行榜第一
Blank
黄花 2015年1月 C/C++大版内专家分月排行榜第二
2012年3月 C/C++大版内专家分月排行榜第二
2011年11月 C/C++大版内专家分月排行榜第二
2010年6月 C/C++大版内专家分月排行榜第二
2010年5月 C/C++大版内专家分月排行榜第二
Blank
蓝花 2011年4月 C/C++大版内专家分月排行榜第三
2011年2月 C/C++大版内专家分月排行榜第三
2010年8月 C/C++大版内专家分月排行榜第三
Bbs4
本版专家分:1713
Bbs5
本版专家分:2347
Bbs9
本版专家分:86280
Blank
红花 2011年3月 C/C++大版内专家分月排行榜第一
2010年9月 C/C++大版内专家分月排行榜第一
Blank
黄花 2015年1月 C/C++大版内专家分月排行榜第二
2012年3月 C/C++大版内专家分月排行榜第二
2011年11月 C/C++大版内专家分月排行榜第二
2010年6月 C/C++大版内专家分月排行榜第二
2010年5月 C/C++大版内专家分月排行榜第二
Blank
蓝花 2011年4月 C/C++大版内专家分月排行榜第三
2011年2月 C/C++大版内专家分月排行榜第三
2010年8月 C/C++大版内专家分月排行榜第三
Bbs5
本版专家分:2347
Bbs4
本版专家分:1713
Bbs9
本版专家分:86280
Blank
红花 2011年3月 C/C++大版内专家分月排行榜第一
2010年9月 C/C++大版内专家分月排行榜第一
Blank
黄花 2015年1月 C/C++大版内专家分月排行榜第二
2012年3月 C/C++大版内专家分月排行榜第二
2011年11月 C/C++大版内专家分月排行榜第二
2010年6月 C/C++大版内专家分月排行榜第二
2010年5月 C/C++大版内专家分月排行榜第二
Blank
蓝花 2011年4月 C/C++大版内专家分月排行榜第三
2011年2月 C/C++大版内专家分月排行榜第三
2010年8月 C/C++大版内专家分月排行榜第三
Bbs5
本版专家分:2347
ie8下tcp长连接带来的问题
背景: rn 公司一个产品是使用gwt的B/S架构应用,很多页面定时发送ajax请求和服务端交互数据刷新页面,交互的数据都放在body里,响应的状态信息通过http code而是通过响应的body体返回。rn 最近测试部报在ie8下,停留在有定时刷新的页面,不做任何操作有时会提示有未知错误,几率很低。开发发现前端有两个错误会连续报出,一个是提示没有需要的body,另一个是505 不支持的浏览器并发。用wireshark抓包,<em>tcp</em>内容如下,其中红色是请求:rn rn[color=#FF0000]POST /Console/console/alert_log HTTP/1.1rnAccept: */*rnAccept-Language: zh-cnrnReferer: http://192.168.1.151:8080/Console/Console.html#basicservice/homernContent-Type: text/xml; charset=UTF-8rnAccept-Encoding: gzip, deflaternUser-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322)rnHost: 192.168.1.151:8080rnContent-Length: 177rnConnection: Keep-AlivernCache-Control: no-cachernCookie: user_id=test; user_name=test; JSESSIONID=97D98075F4F4AACE3E2DC7882671F9D5rn[/color]rnHTTP/1.1 200 OKrnServer: Apache-Coyote/1.1rnContent-Type: application/xmlrnContent-Length: 170rnDate: Wed, 09 Nov 2011 09:28:19 GMTrnrn[color=#FF0000]POST /Console/console/alert_log HTTP/1.1rnAccept: */*rnAccept-Language: zh-cnrnReferer: http://192.168.1.151:8080/Console/Console.html#basicservice/homernContent-Type: text/xml; charset=UTF-8rnAccept-Encoding: gzip, deflaternUser-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322)rnHost: 172.16.201.151:8080rnContent-Length: 177rnConnection: Keep-AlivernCache-Control: no-cachernCookie: user_id=test; user_name=test; JSESSIONID=97D98075F4F4AACE3E2DC7882671F9D5rn[/color]rnHTTP/1.1 505 HTTP Version Not SupportedrnServer: Apache-Coyote/1.1rnDate: Wed, 09 Nov 2011 09:28:23 GMTrnConnection: closern[color=#FF0000]rnget_alert_log_list[/color]rn rn 查了一下http协议,http1.1支持建议一个长连接,也支持一个请求先发包含有expect:100-continue的header,如果响应是100再继续发body。rnrn 感觉出现问题的地方是在这个<em>tcp</em>连接里先只发了一个不带expect:100-continue的header,响应直接是找不到body,紧接着发了另一个header,由于使用前一个请求的<em>tcp</em>连接可能导致格式上有问题于是直接505并要关闭该连接。再关闭前接收到之前某个请求的body,<em>tcp</em>连接结束。问题似乎有2个,一个是第一个只发header的请求缺少expect:100-continue,另一个是第二个请求由于和第一个请求共用了同一个<em>tcp</em>连接产生了格式上的问题无法解析。rn 搜了一下,也没人说ie8有上面的问题,我也觉得ie不太可能对http1.1支持的如此不好。暂时在容器的配置文件里加了maxKeepAliveRequests="1" ,关掉<em>tcp</em>长连接,目前没有再复现以上的问题。rn 有没有可能是这样,ie用同一个<em>tcp</em>连接发送多个http请求时,先发了一个请求的header,多线程并发在发body前又用该<em>tcp</em>连接发了另一个请求的header,然后才发第一个请求的body,结果就混乱了?rn
TCP的ACK包乱序,以致带来窗口更新问题
TCP的ACK机制问题rnrn现在我假定每发一个报文段,对端回一个ACK包,接收方我收到了1,2两个包,但我回ACK2,ACK3给对端时,ACK3先到达发送方,此时我的拥塞<em>窗口</em>是该根据ACK3 ACK的字节数更新,收到ACK2不更新呢?rn还是根据收到的ACK包数目更新,每收到一个ACK包,发送方拥塞<em>窗口</em>增大一个报文段的大小?不过方法2我觉得不好计算重复的ACKrn跪求高手赐教~
pthread_cancel的带来的一个死锁问题(验证)
代码来自:http://blog.csdn.net/wwyyxx26/article/details/9018473 如下:test_deadlock.c#include #include #include #include pthread_mutex_t mutex = PTHREAD_MUTEX_INITIA
swoole tcp保证接受数据接受的完整性
打开包长检测特性。包长检测提供了固定包头+包体这种格式协议的解析。启用后,可以保证Worker进程onReceive每次都会收到一个完整的数据包。代码如下: server端: $server = new swoole_server('0.0.0.0',9501); $server-&amp;gt;set([ 'open_length_check' =&amp;gt; true, 'pac...
关于java之中死锁会不会占用系统资源
RT代码如下:   public class AnotherDeadLock {    public static void main(String[] args) {      final Object resource1 = &quot;resource1&quot;;      final Object resource2 = &quot;resource2&quot;;      // t1 tries to lo...
java操作xml会不会产生死锁现象
如果不外加条件控制的话,java操作(读取)xml<em>会不会</em>产生<em>死锁</em>现象,
如何避免窗口死锁
在主窗体调用timer或者交消耗时间的操作时,<em>窗口</em>会卡死,如何避免这种情况,线程方法就不说了
更新同一记录不同字段会不会死锁
SQLite多线程同时更新同一记录但不同字段<em>会不会</em><em>死锁</em>?
死锁后,ORACLE会不会自动解锁!
<em>死锁</em>后,ORACLE<em>会不会</em>自动解锁!
SQL高手:这样的存储过程会不会发生死锁
SQL Server7.0中形如:rnCreate procedure mySP @Msg char(100),@id int outputrnAsrn Select @id=id from mysystab where item=’thisitem’ --读取系统表当前idrn Select @id=@id+1rn Update mysystab set id=@id where item=’thisitem’ --更新系统表当前idrn Insert into othentab(id,msg) Values(@id+1,@Msg) --将此id插入倒别的表rnReturn 0rnrn请教SQL高手:rn 1。<em>会不会</em>出现<em>死锁</em>?rn 2。当两个进程同时调用此SP时(并发),是不是会出现生成两个相同的id?如果会,怎么避免?
方法前加synchronized,会不会造成死锁
方法是这样的:rnpublic static synchronized String generate(String nname, String distcode, String district, Session sess)rn .rn .rn .rnrn方法中要执行[color=#FF0000]查询和更新[/color]操作,由于该方法在业务中被频繁调用,rn请教各位在高并发量情况下<em>会不会</em>造成程序<em>死锁</em>或数据库<em>死锁</em>?
请教大侠,我这样写会不会死锁
[code=sql]set xact_abort ONrn BEGIN TRANrn UPDATE Recharge SET status=1 WHERE id=@idrn DECLARE @pay INTrn select @pay=pay from Recharge where id=@idrn ......rn COMMIT TRAN[/code]rnrnupdate要加排他锁,就把条记录锁住了,select这条记录又要加共享锁,但是排他锁只有在事务结束时才释放,所以会永远停在select那里了,不知道我的想法对不对,请大侠指点一二,我这样写<em>会不会</em><em>死锁</em>,应该怎么写.
一段不知道会不会导致死锁的代码
问题是这样的,目前有个应用,平时没有问题,但极少数情况下会抛出数据库<em>死锁</em>的异常,我怀疑有可能是并发操作的时候出现,检查之后定位到这一段执行update的语句,请帮忙看看,有没有可能导致<em>死锁</em>rnrn调用这个方法的是methodA,methodA中先把Autocommit设为false,然后循环调用executeUpdate(String sql),因为可能会有多条sql需要执行,最后commit,再回复Autocommit为truernrnexecuteUpdate(String sql)的代码如下rn[code="java"]rn public int executeUpdate(String sql) throws SQLException rn //LogUtil.getLogger().debug("SQL [" + sql + "]");rn rn stmt = conn.createStatement();rn rn int count = stmt.executeUpdate(sql);rn rn if(stmt != null)rn stmt.close();rn rn rn return count;rn rn[/code]rn有个需要说明的是methodA和executeUpdate都在同一个类中,Connection conn和Statement stmt都是全局的,<em>会不会</em>是stmt创建的时候出的问题,是否需要加上synchronized
多线程修改同一个实例,会不会发送死锁??
[code=C#]rnHashtable ht = new Hashtable() ;rnhtable.Add("a", new Channel());rnrn[/code]rn我现在有多个线程在运行,他们可能会同时修改一个Channel类实例的属性,这个类是存在hashtable里面rn对同一个类修改,这样<em>会不会</em>发生<em>死锁</em>?rn
接受窗口确定发送窗口
本课程从计算机网络的物理层 数据链路层 网络层 传输层 应用层 逐一给大家讲解。对计算机通信的机制做彻底剖析。本课程是学习CCNA CCNP 网络工程师课程之前必须要掌握的知识。
MFC窗口接受拖放
最近想练习用WPF写界面,调用API的时候发现太麻烦,每个参数要自己声明类型,于是准备写一个DLL,在DLL里面调用API,将结果返回(字符串)。
窗口不能接受消息
CRect rcClient;rnrn GetWindowRect(rcClient);rnrn DWORD dwStyle = WS_CHILD|WS_POPUP|WS_VISIBLE);rnrn m_wndLocal.CreateEx( 0, AfxRegisterWndClass( 0 ), "test", dwStyle,rn CRect(rcClient.left + 250, rcClient.top+150, rcClient.left + 250 + QCIF_WIDTH, rcClient.top+150 + QCIF_HEIGHT ), rn this, NULL, NULL );rnrn可是当我用spy++在m_wndLocal<em>窗口</em>跟踪时得不到任何消息,请问这是什么原因?rn
C#程序Tcp发送和接受
本文为自己写的<em>tcp</em><em>接受</em>消息,和发送消息,里面很清除的实现了功能,而且包含所有的代码,直接运行就可以实现
TCP服务器接受数据问题
1.服务器采用TCP协议rn2.客户端向服务端发送数据,每10秒发送一次数据 数据大小为250Kbrn3,间隔10秒钟向服务器发送一次。rn4。客户端发送结尾字符为“ZZ”(0x5A5A)rn问:服务器程序如何接收250KB 数据,以及确认完毕?谢谢。
tcp服务器 接受客户端数据
tco服务器<em>接受</em>客户端数据,能回复客户端数据,基于vc6
WM_TIMER会不会窗口一起销毁?
我在一个对话框中使用了WM_TIMER消息,在OnInitDialog中使用SetTime。如果我不显式调用KillTime,那么对话框在被关闭后,这个定时器还<em>会不会</em>存在?
窗口hide之后,能否接受窗口消息??
<em>窗口</em>visible = false之后,能否<em>接受</em><em>窗口</em>消息??
手工窗口创建的窗口,怎么接受消息?
m_wnd.Create(_T("STATIC"), "PreView1", rnWS_CHILD | WS_VISIBLE |WS_CLIPCHILDREN,CRect(0, 0, 300, 300), this, 1234);rnrn我想让这个<em>窗口</em><em>接受</em>到鼠标双击的消息,应该怎么办?
重启网卡会不会导致tcp连接断开
请问各位,如果我重启网卡之后,<em>会不会</em>导致<em>tcp</em>连接断开呢?
死锁死锁还是死锁
演示一 没有提交的事务,NOLOCK 和 READPAST 处理的策略:rn查询<em>窗口</em>一请执行如下脚本:rnCREATE TABLE t1 (c1 int IDENTITY(1,1), c2 int)rngornBEGIN TRANSACTIONrninsert t1(c2) values(1)rn在查询<em>窗口</em>一执行后,查询<em>窗口</em>二执行如下脚本:rnselect count(*) from t1 WITH(NOLOCK)rnselect count(*) from t1 WITH(READPAST)rn结果与分析:rn查询<em>窗口</em>二依次显示统计结果为: 1、0rn查询<em>窗口</em>一的命令没有提交事务,所以 READPAST 不会计算没有提交事务的这一条记录,这一条被rn锁住了,READPAST 看不到;而NOLOCK 则可以看到被锁住的这一条记录。rn如果这时候我们在查询<em>窗口</em>二中执行:rnselect count(*) from t1 就会看到这个执行很久不能执行完毕,因为这个查询遇到了一个<em>死锁</em>。rn清除掉这个测试环境,需要在查询<em>窗口</em>一中再执行如下语句:rnROLLBACK TRANSACTIONrndrop table t1rnrnrn“select count(*) from t1 就会看到这个执行很久不能执行完毕,因为这个查询遇到了一个<em>死锁</em>。”为什么!为什么~![img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/44.gif][/img]rn请各位帮小弟分析分析,实在不懂啊。rn本人理解,第一次select with(nolock)没有加锁,第二次还是select with(nolock)何来的<em>死锁</em>
非阻塞TCP SOCKET, send()会不会阻塞?
case 1.服务端: 非阻塞, 持续向客户端发送数据;客户端: 非阻塞,不接s收服务端数据;现象:客户端socket缓存满后,服务端send函数阻塞
TCP服务器接受数据协议解析(服务器循环接受数据问题)
[img=http://hi.csdn.net/attachment/201008/18/159280_128211983720bT.jpg][/img][code=C/C++]rn#includern#includernrn#pragma comment(lib,"ws2_32.lib")rntypedef unsigned char BYTE;rntypedef BYTE near *PBYTE;//PBYTErnrnint main()rnrn WORD wVersionRequested;rn WSADATA wsaData;rn int err;rn wVersionRequested=MAKEWORD(1,1);rn err=WSAStartup(wVersionRequested,&wsaData);rn if(err!=0)rn rn return 0 ;rn rn rn if((LOBYTE(wsaData.wVersion) !=1) || (HIBYTE(wsaData.wVersion) !=1))rn rn WSACleanup();rn return 0;rn rn rn SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);rn rn SOCKADDR_IN addrSrv;rn addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);rn addrSrv.sin_family=AF_INET;rn addrSrv.sin_port=htons(8801);//6000rnrn bind(sockSrv,(SOCKADDR *)&addrSrv,sizeof(SOCKADDR));rn listen(sockSrv,50);rn rn SOCKADDR_IN addrClient;rn int len=sizeof(SOCKADDR);rn rn while(1)rn rn SOCKET sockConn=accept(sockSrv,(SOCKADDR *)&addrClient,&len);rn rnrn const int max_read_len=(4+sizeof(double)*4*8000);rn int err;rn char recv1[1024],recv2[1024];rn unsigned int readlen1,readlen2,datalen=max_read_len;//读取长度rn readlen2=0;rn char *recvBuf;//=(char *)malloc(max_read_len);rn //2010.08.21 //////读取包读取包长度前4个字节rn recv(sockConn,recv1,4,0);rn unsigned int lenData=(*((unsigned int *)&recv1[0]));rnrn recvBuf=(char *)malloc(lenData+6);rn if(!recvBuf) return 0;rn /////2010.08.21 rn while (1)rn rn readlen1=recv(sockConn,recv2,1024,0);//300*1024,datalenrn //<em>接受</em>数据段长度//rn printf("%.f--- %d,%d --xx\n",*((float*)&recv2[0]),readlen2,readlen1);rn if(readlen1X+4+2=X+6 rn rn memcpy(recvBuf+readlen2-readlen1,recv2,readlen1);rn rn else//printf("interupt111%.f--- %d,%d --xx\n",*((float*)&recv2[0]),readlen2,readlen1);rn break;rn rn PBYTE p=(unsigned char *)recvBuf;rn printf("interupt222 %d \n",lenData+4);rnrn for(unsigned int i=5;i
窗口接受键盘消息的问题
模拟机上的软键盘<em>接受</em>键盘消息不正常。rn在刚启动程序的时候还能够不能<em>接受</em>消息,rn但是经过一个<em>窗口</em>切换动作以后,就可以<em>接受</em>消息了。rn其中<em>窗口</em>切换是指通过一个按钮调用一个子<em>窗口</em>的MoveWindow()函数。rn我刚刚开始WINDOWS CE的开发,望哪位仁兄帮忙,急啊!
帮忙看下这种写法会不会带来异常. C++多态问题.
[code=C/C++]class Xrnrn virtual void FunctionA();rn virtual void FunctionB();rnrn;rnrnclass A : public Xrnrn void FunctionA();rn;rnrnclass B : public Xrnrn void FunctionB();rn;rnrnrnclass Crnrnpublic:rn C()rn rn pA = new A;rn pB = new B;rn rn C~()rn rn delete pA;rn delete pB;rn rnprivate:rn X *pA;rn X *pB;rn;[/code]rnrn能这样写吗?
寒冬惊雷!摩根大通发币会不会带来一波牛市?
2月14日,情人节,,美国最大金融服务机构,摩根大通(JP Morgan)宣布与加密货币“联姻”,计划发行自己的加密货币JPM Coin,用于客户业务之间的交易结算。 J...
模仿别人软件的界面会不会给自己带来麻烦?
我写了一个软件,界面上有很多地方模仿了竞争对手的,因为我觉得这样可以使用户无需再学习新的界面。rn但是这样做<em>会不会</em>惹麻烦呢?比如被人告侵权什么的?rnrn另外我想加一个从竞争对手软件的迁移功能,就是把用户的设置读过来,但并不删除那个软件。rn可以提示用户迁移或不问用户直接就把设置拿过来用了。这样<em>会不会</em>有麻烦?rnrn竞争对手是个老美,是什么软件就先不说了,等真的混出点明堂来再说了,呵呵。rn
TCP零窗口攻击?
零<em>窗口</em>(ZeroWindow)和坚持定时器(TCP Persist Timer)初识零<em>窗口</em>TCP滑动<em>窗口</em>零<em>窗口</em>(ZeroWindow)坚持定时器(TCP Persist Timer)是不是DDos攻击问题重现解决办法当时的办法新的问题 初识零<em>窗口</em>   13年时曾经遇到过一个问题(原谅我现在才写这篇文章…):提供下载服务的生产环境上(SUSE Linux,使用Tomcat BIO的Connector...
TCP窗口控制的作用
1,提高发包吞吐量:        确认应答不再是以每个片段,而是以更大的单位(<em>窗口</em>大小)进行确认,转发时间就被大幅度的缩短。至于<em>窗口</em>的大小是由接收端主机决定的,也方便进行流控制。 2,减少丢包:         允许发送方在收到ACK之前连续发送多个分组。使用了<em>窗口</em>控制,某些确认应答即便丢失也无需重发。可以根据自己的确认应答或者下一个确认应答来确认。       当一个报文丢失时
TCP窗口协议
什么是<em>窗口</em>win?可能以下这张图更容易理解点。横轴代表的是发送端待发送的数据字节,从图中可以看出有8192个字节要进行传输。而图中最显眼的绿色区域,就代表<em>窗口</em>。<em>窗口</em>分为两部分,左边是发送端已经发送数据包出去,但是未收到接收端返回的ack,右边是可以发送的区域,这样是目前我们数据可以用武之地的地方。<em>窗口</em>是从左到右移动的(也只能这么移动),可以看到<em>窗口</em>左边竖条两边的差异,就是有没有收到ack,所以一旦发
TCP缓存区和窗口的关系
插口API允许进程设置发送和接收缓存的大小。接收缓存的大小是该连接上所能够通告的最大<em>窗口</em>大小。
3.19 进程,死锁,CPU取址,TCP
进程五种状态,创建(填写空白PCB,内涵控制和管理进程的信息),就绪(已分配资源,还未分配CPU),运行,阻塞(执行IO、申请缓存失败),终止(进程结束,系统重启) <em>死锁</em>,两个进程都需要同样的两波资源,例如资源A和资源B,一个进程甲锁死了资源A,几乎同一时间一个进程乙锁死了资源B,这时候进程甲在申请资源B会因进程乙锁死了资源B而申请失败。这时候就造成了<em>死锁</em> CPU通过内存取指令,不能保存指令...
TCP缓存区与窗口的关系
TCP缓存区与<em>窗口</em>关系网上大多错误的理解 滑动<em>窗口</em>大小=<em>接受</em>缓存区大小 接收方通告<em>窗口</em>大小=发送方缓存区大小 注意:以上两个结论都是错误的我们在学习网络编程时,通常会参考两本很经典的书《UNIX网络编程 卷1》和《TCP/IP 卷1》。然而,我在看与缓存区与<em>窗口</em>相关模块知识点时,通常会犯迷糊。感觉这两本书对其的描述很少,描述得有点模糊。《TCP/IP详解 卷1》第1版的一句重要的描述,因为在小字处
TCP窗口滑动机制
滑动<em>窗口</em>协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送<em>窗口</em>;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收<em>窗口</em>。发送<em>窗口</em>和接收<em>窗口</em>的序号的上下界不一定要一样,甚至大小也可以不同。不同的滑动<em>窗口</em>协议<em>窗口</em>大小一般不同。发送方<em>窗口</em>内的序列号代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。下面举一个例子(假设发送<em>窗口</em>尺寸为2,接收<em>窗口</em>尺...
有关Tcp的堵塞窗口
最近看了TCP/ip详解第一卷,深感此书是超级好书啊。把以前不懂的似懂非懂的东西,都解释的非常清楚啊。感谢作者。rnrn 看了第20章的TCP的成块数据流,里面介绍滑动<em>窗口</em>协议,和堵塞<em>窗口</em>协议,说堵塞<em>窗口</em>协议是发送方使用的流量控制,发送方取堵塞<em>窗口</em>和通告<em>窗口</em>中的最小值作为发送上限。问题来了,堵塞<em>窗口</em>的大小是一直增加的,所以除了启动阶段,堵塞<em>窗口</em>的大小肯定是大于通告<em>窗口</em>的,所以两者的最小值肯定是通告<em>窗口</em>的值,那么此时堵塞<em>窗口</em>就没有作用了?那还怎么控制发送方使用的流量呢?rnrn 然道堵塞<em>窗口</em>只有在刚开始的阶段有用?所以称为“慢启动”?那么后面阶段发送方的流量控制如何实现?rnrn 望高人回答,谢谢。
scalable tcp窗口变化
在长肥管道中的拥塞控制机制,scalable TCP
TCP窗口机制
font-size:15.0pt;font-family:宋体;mso-ascii-font-family: Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font: minor-fareast;mso-hansi-font-family:Cali
TCP 窗口协议
这里使用可视化展现<em>窗口</em>协议 在上面这个图中,我们将字节从1至11进行标号。接收方通告的<em>窗口</em>称为提出的<em>窗口</em>(offered window),它覆盖了从第4字节到第9字节的区域,表明接收方已经确认了包括第3字节在内的数据,且通告<em>窗口</em>大小为6。由于<em>窗口</em>大小是与确认序号相对应的。发送方计算它的可用<em>窗口</em>,该<em>窗口</em>表明多少数据可以立即被发送。 当接收方确认数据后,这个滑动<em>窗口</em>不时地向右移动。<em>窗口</em>两个
TCP中的窗口
滑动<em>窗口</em>         因为序号是模2的m次方,所以从0至2的m次方-1的序号可以表示为一个环。 缓存被表示为一组小格子,称为滑动<em>窗口</em>(sliding window),在任何时候它们都占据了圆的一部分。在发送方,当一个分组被发送出去,相应的小片就被标记。当所有的小片都被标记后,就表示缓存已满,不允许从应用层接收更多的报文。当一个确认达到后,相应的小片的标记就被取消。如果这个<em>窗口</em>前端连续多...
TCP窗口扩大选项
TCP<em>窗口</em>扩大选项   <em>窗口</em>扩大选项使TCP的<em>窗口</em>定义从16bit可以增加到32bit,这是通过修改TCP的选项来完成的。这个选项只能出现在syn报文中,因此当连接建立后,<em>窗口</em>的亏大因子是固定的。为了使用<em>窗口</em>扩大,两端必须在它们的SYN报文段中发送这个选项。主动连接的一方在其SYN报文中发送这个选项,但是被动连接的一方只能在收到这个选项的SYN时才可以发送这个选项,两个发送的扩大因子可以不同
我的TCP窗口怎么了
[img=https://img-bbs.csdn.net/upload/201801/12/1515719656_553113.png][/img]rnrn如图,各位。我的两台设备间就是做一个简单的发包与回包的过程,192.168.100.77主机发包,192.168.100.24主机回包。在前两个包。TCP的<em>窗口</em>都在正常的滑动,<em>窗口</em>8192.但是后续的包在交互过程中,192.168.100.24的<em>窗口</em>居然在不断的减小,在某一时刻<em>窗口</em>报0 ,导致两端无法再继续发包。rnrn现在我纳闷了,这两台设备仅有这条TCP链路,没有其他了。我的包也是正常收正常发,但是为什么<em>窗口</em>却在急剧减小呢?应用层可是正常的收发包的呢?有大神可以解释下么?如果要避免这个情况该怎么做?
TCP之糊涂窗口综合征
http://www.cnblogs.com/zhaoyl/archive/2012/09/20/2695799.html 这个症状指的是: 这个问题可以归结为小包的问题,就是由于发送端和接收端上的处理不一致,导致网络上产生很多的小包,之前也介绍过避免网络上产生过多小包的措施,比如Nagle算法。在滑动<em>窗口</em>机制下,如果发送端和接收端速率很不一致,也会产生这种比较犯傻的状态:发送方发送的数据,只要一
TCP接收通告窗口
一些TCP协议栈将TCP头部16bit的<em>窗口</em>字段解释为有符号的整数,为了兼容这些系统,Linux内核定义了在没有<em>窗口</em>扩展系数选项的情况下,最大的<em>窗口</em>值为宏MAX_TCP_WINDOW,其为最大的16bit的有符号数。但是默认情况下,内核未开启此功能。PROC文件<em>tcp</em>_workaround_signed_windows默认为0,用户可置1开启此兼容功能。如果接收到对端系统发送的TCP<em>窗口</em>扩张系数选...
基于窗口的TCP简单编程
基于<em>窗口</em>的TCP简单编程 主要流程: 在服务端用一个<em>窗口</em>来处理<em>接受</em>到的消息,显示在<em>窗口</em>中的列表框中。 主要函数: DialogBoxParamA ( hInstance, (LPCSTR) IDD_DIALOG1, NULL, DlgProc, 0 ); 实例化对话框。 int CreateListenSocket ();//创建socket int DealSocketEvent...
请教各位:过分使用指针会不会带来副作用???
我这里的指针不会动态申请的,相当于是全局的,而且大量使用rn,rn请大家给个答案,谢谢
想问个操作会不会带来错误,或是未知错误
rn结构 _A rn{rn 变量 B;rn 队列 C;rn 队列 D;rn}A,*PArnrntypedef CArrayAArray;rnrnAArray g_pEArray;rnrnPA F = new A;rng_pEArray.Add(F);rnrn我本想用非指针来加放到g_EArray队列中的,但会出一个:rnNo copy constructor available for struct "_A"rnrn没办法,不知道这样<em>会不会</em>出错.rnrn还请大家指教,碰到这样的情况该怎么保存,取出数据呢.rn呵呵,以前用分用的厉害,不知这里的分规则,现在没什么分了.rn
TCP面试题(二)之TCP糊涂窗口问题
在说明这个问题之前,我想先说明下大概的脉络:                                                                 1、何谓“糊涂<em>窗口</em>”;                                                                 2、如何解决。 问题描述     那么,我就先说说“糊涂<em>窗口</em>”是怎
GPRS TCP 超级大问题?? 关于TCP 窗口
我使用 mc35 拨号上网后,定义了<em>窗口</em>大小为 100 字节。然后,连接上<em>tcp</em> server。发现,向模块发送100 字节一下 数据没有问题,但是发送 100 以上字节。模块端始终无法接收数据,client 没有 给server ack 。但是<em>tcp</em> server 端的sequence 确自己增加了。不知道,各位老大有没有遇到过这类的问题??
如何防止表死锁带来与数据库断开的问题!?
有一表要频繁的被读\写,如何防止该表<em>死锁</em>而<em>带来</em>与数据库断开的问题!?
Python线程,以及多线程带来的数据错乱和死锁的解决方法
摘至本人有道云笔记《Python线程》 1.python多线程的创建 在Python中,同样可以实现多线程,有两个标准模块thread和threading,不过我们主要使用更高级的threading模块 threading模块提供的类:      Thread, Lock, Rlock, Condition, [Bounded]Semaphore, Event, Timer, local。...
接受tcp包后,什么时候发tcp
21 6.383230 192.168.1.85 66.249.89.104 TCP dossier > http [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=1 SACK_PERM=1rn22 6.383362 66.249.89.104 192.168.1.85 TCP http > dossier [SYN, ACK] Seq=0 Ack=1 Win=5840 Len=0 MSS=1460 SACK_PERM=1 WS=7rn23 6.383396 192.168.1.85 66.249.89.104 TCP dossier > http [ACK] Seq=1 Ack=1 Win=65536 Len=0rnrnrn74 5.906351 192.168.1.85 66.249.89.104 HTTP GET /options/i6.png HTTP/1.1 rn75 5.906593 66.249.89.104 192.168.1.85 TCP http > kazaa [ACK] Seq=3767 Ack=2221 Win=10624 Len=0rn76 5.994010 66.249.89.104 192.168.1.85 TCP [TCP segment of a reassembled PDU]rn77 5.994045 66.249.89.104 192.168.1.85 TCP [TCP segment of a reassembled PDU]rn78 5.994072 192.168.1.85 66.249.89.104 TCP etebac5 > http [ACK] Seq=716 Ack=1528 Win=65536 Len=0rnrn访问 http://www.google.com/intl/en/options/ 抓的包rn前面 21->23是建立 <em>tcp</em>连接rn 当发出21后,<em>接受</em>到了22,通过syn=1,ack=1 可以判断现在要返回一个23,rn我的问题是分段得时候rn 当依次抓到75,76,77 应该通过什么判断是抓到了77 后返回78,而不是在76之后就返回?rnrn我需要了解什么知识可以解决上面得问题。给个大概就可以了
拖动没有标题栏的窗口带来的新问题。
为了实现拖动没有标题栏的<em>窗口</em>,在.h文件中rn[code=C/C++]private: // User declarationsrnBEGIN_MESSAGE_MAPrnMESSAGE_HANDLER(WM_NCHITTEST,TMessage,OnNcHitTest)rnEND_MESSAGE_MAP(TForm);rnvoid __fastcall Tid_miniieform::OnNcHitTest(TMessage& Msg);[/code]rnrncpp文件:rn[code=C/C++]void __fastcall Tid_miniieform::OnNcHitTest(TMessage& Msg)rnrn TPoint pt;rn pt.x = LOWORD(Msg.LParam);rn pt.y = HIWORD(Msg.LParam);rn pt = ScreenToClient(pt);rn RECT rc;rn SetRect(&rc, 0, 0, 510, 28);rn if (PtInRect(&rc, pt))rn Msg.Result = HTCAPTION;rn elsern DefaultHandler(&Msg);rn[/code]rnrn现在我在窗体的FormShow事件里,写下如下语句,窗体第一次加载一切正常,当hide后,再show的时候,就出现问题。rnthis->Position = poScreenCenter;rnrn错误提示如下:rn[img=http://hi.csdn.net/attachment/201009/3/7790671_1283485462VG1b.jpg][/img]rnrn该如何解决,谢谢。rnrn
TCP服务器接受数据,TCP客虎段接受数据问题
rn1。TCP服务端rn 如何把float型数组转换成 BYTE数组发送呢?rn float f1[]=1.1,1.3,1.3......rn BYTE b[]=...,如何转换呢?rn2。在b[]末尾加入 0X5A5A 后(服务端TCP)发送数据rn3。服务端发送数据send();
remoting的客户端没有正常退出,会不会影起数据库死锁
我用oracle10g, remoting用iis部属在本机,客户端也在本机。客户端在处理事务时,中间我调试时强制退出,远程对象为什么没有自动回滚呢?rn正常运行时没问题,我会捕到错再回滚的,不用remoting时好象我中间强退也会回滚的,是不是remoting生命周期的问题?我没有在服务端设生命周期,那默认应该是什么多久呢?怎么才能让我在程序非常退出时回滚操作呢?rn我初学remoting,希望回答详细些, 谢谢
tcp发送接受程序,vc++编写
<em>tcp</em>的发送,<em>接受</em>程序,很不错,方便学习
UDP/TCP客户端发送与接受数据
UDP/TCP客户端发送与<em>接受</em>数据 udp 步骤 1.创建套接字 2.发送和接收 3.关闭套接字 import socket udp类似写信 socket.AF_INET internet通信 socket.AF_UNIX 本机通信 socket.SOCK_DGRAM 流式套接字 socket.SOCK_STREAM 数据报套接字 (创建套接字) u...
关于TCP大数据包接受的问题
我要<em>接受</em>一个比较大的TCP数据包,我用的是SELECT方法,如果当有数据到来的时候select返回,可以<em>接受</em>,可是如果这个数据很大,不能够一次read完,那么我是紧接着就地一个次read呢,还是继续call select,等 下一次select返回?rn谢谢
c#接受tcp数据 急急急
求助各位大侠 我做的<em>接受</em><em>tcp</em>协议的数据 代码如下 rn IPAddress lacaladdr = IPAddress.Parse("127.0.0.1");rn int port = Int32.Parse("9086");//本地待侦听端口 rn TcpListener <em>tcp</em>Listener = new TcpListener(port);//创建TcpListener对象实例 rn <em>tcp</em>Listener.Start();rn TcpClient <em>tcp</em>client = <em>tcp</em>Listener.AcceptTcpClient();rn NetworkStream ns = <em>tcp</em>client.GetStream();rn StreamReader sr=new StreamReader(ns);rn string reasult = sr.ReadToEnd();rn Invoke(new UpdateDisplayDelegate(UpdateDisplay),new object [] reasult);rn <em>tcp</em>client.Close();rn <em>tcp</em>Listener.Stop();rn为何能够建立连接 却无法接收数据 ?? 提示内容为:-sr.ReadToEnd() “sr.ReadToEnd()”引发了“System.IO.IOException”类型的异常 string System.IO.IOException base "无法从传输连接中读取数据: 无法立即完成一个非阻止性套接字操作。。" System.SystemException System.IO.IOExceptionrn
TCP层接受发送数据接口关系
<em>tcp</em><em>接受</em>发送数据接口关系  
TCP发送多次,接受一次的问题
一个进程通过socket向另外一个进程发送数据rn发送了几次,比如每次的数据分别是:发送1,发送2,发送3, ... ,发送10rnsend了10次rnrn<em>接受</em>的进程在接收后打印,结果是:rn发送1rn发送2发送3发送4...rn只recv了2次rnrn请问我怎么设置参数,使之发送几次,就<em>接受</em>几次?我想让这些数据分开接收!rn
TCP 协议解析(服务端接受数据问题)
[img=http://hi.csdn.net/attachment/201008/18/159280_128211983720bT.jpg][/img]rn做个服务器,<em>接受</em>客户端发送过来的数据包。rn代码如下:rn[code=C/C++]rnrn#includern#includernrn#pragma comment(lib,"ws2_32.lib")rntypedef unsigned char BYTE;rntypedef BYTE near *PBYTE;//PBYTErnrnint main()rnrn WORD wVersionRequested;rn WSADATA wsaData;rn int err;rn wVersionRequested=MAKEWORD(1,1);rn err=WSAStartup(wVersionRequested,&wsaData);rn if(err!=0)rn rn return 0 ;rn rn rn if((LOBYTE(wsaData.wVersion) !=1) || (HIBYTE(wsaData.wVersion) !=1))rn rn WSACleanup();rn return 0;rn rn rn SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);rn rn SOCKADDR_IN addrSrv;rn addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);rn addrSrv.sin_family=AF_INET;rn addrSrv.sin_port=htons(8801);//6000rn // typedef struct sockaddr SOCKADDR;¡£rn bind(sockSrv,(SOCKADDR *)&addrSrv,sizeof(SOCKADDR));rn listen(sockSrv,5);rn rn SOCKADDR_IN addrClient;rn int len=sizeof(SOCKADDR);rn rn while(1)rn rn SOCKET sockConn=accept(sockSrv,(SOCKADDR *)&addrClient,&len);rn rn /*3.intel little-endian */rn unsigned char sendBuf[]=0x25,0x00,0x00,0x00, 0x00, 0x00,0x00,0x00,0x01,rn 0x00,0x00,0x80,0x3F, 0x00,0x00,0x0C,0x41, 0x00,0x00,0x00,0x01, 0x00,0x00,0x00,0x01,rn 0x00,0x00,0x00,0x40, 0x00,0x00,0x0C,0x41, 0x00,0x00,0x00,0x01, 0x00,0x00,0x00,0x01,rn 0x12,0x34,0x56,0x78, 0x5A,0x5A;rn rn printf("%d %d\n",sizeof(sendBuf),strlen((char *)sendBuf)); rn send(sockConn,(char *)sendBuf,sizeof(sendBuf)+1,0);rn char recvBuf[300*1024];rn recv(sockConn,recvBuf,300*1024,0);rn PBYTE p=(unsigned char *)recvBuf;rn /* 3. intel little=endian */ rn for(unsigned int i=9;i< 25; i++ )rn //list[i] = (unsigned char)(p[i]);rn list[i] =*((float*)&p[i]);rn numwritten = fwrite(list,4,20000,stream);rn fclose( stream );rn rn rn closesocket(sockConn);rn rnrn[/code]
TCP协议接受IP层数据包过程
IP层函数ip_local_deliver函数处理对数据包处理<em>接受</em>后根据iphdr-&amp;gt;protocol数据域中协议号在inet_protocol全局变量中查找传输层的<em>接受</em>函数,TCP协议的<em>接受</em>函数是<em>tcp</em>_v4_rcv,<em>tcp</em>_v4_rcv函数的功能主要包含两个方面: (1)、数据包合法性检查 (2)、确定数据包是快速路径处理还是慢速路径处理 下面分析<em>tcp</em>_v4_rcv函数的处理分析...
python使用TCP服务端发送接受数据
import socket # 创建套接字 <em>tcp</em>_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定本地信息 <em>tcp</em>_server_socket.bind(("", 7890)) # listen 监听 <em>tcp</em>_server_socket.listen(128) # 等待客户端的链接 accept ne...
怎样发送和接受基于tcp/ip协议的数据包
数据包包括包头和包体.急rn能给段源码更好rn分不够再加.rn谢谢
如何不段接受tcp数据啊?
我想做个文件传输的程序,但现在遇到一个问题:rn服务器不停地send(),客户机不停的recv(),但万一客户机因系统忙碌,没来得及接收,会怎样呢?rn请高手指导阿!
python使用TCP客户端发送接受数据
import socket # 1. 创建<em>tcp</em>的套接字 <em>tcp</em>_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2. 链接服务器 <em>tcp</em>_socket.connect(("172.18.146.150", 8080)) # 3. 发送数据/接收数据 send_data = input("请输入要发送的数据:") <em>tcp</em>_...
TCP 连接时, 发送接受数据的问题
我使用TCP 连接进行数据的发送<em>接受</em>, 可能由于网络繁忙,socket 不能一次发送或接收到所有数据, 对于程序,我如何去控制接收和发送完整的数据呢??rnrn发送: int nSend = send(socket, buff, nSendLen, 0);rnrn接收: int nRecv = recv(socket,szText, 300, 0);rnrn对于这一块,我如何控制?rnrn请大家赐教,谢谢!
请教用TCP发送和接受数据的问题
CSocket sClientSock;rn sClientSock.Create();rn SOCKADDR_IN Addr;rn memset( &Addr, 0, sizeof(SOCKADDR_IN) );rn Addr.sin_family = AF_INET;rn Addr.sin_port = htons(1001);rn Addr.sin_addr.S_un.S_addr = inet_addr(strIPAddr);rn sClientSock.Connect( (SOCKADDR*)&Addr, sizeof(SOCKADDR_IN) );rn rn char* buf;rn buf = "1";rn int nLen;rn nLen = sClientSock.Send(buf,1,0);rn if(nLen == SOCKET_ERROR)rn rn CString str;rn str.Format("%d",GetLastError());rn AfxMessageBox(str);rn sClientSock.Close(); rn return FALSE;rn rn rn nLen = sClientSock.Receive(Buf,580,0); rn if(nLen == SOCKET_ERROR)rn rn sClientSock.Close();rn return FALSE;rn rn这段代码调式运行成功,但执行的时候不行。怎么办?我是新手啊
qt 点击一个窗口另一个窗口关闭 带来的问题
如题,两个<em>窗口</em>widget1和widget2都继承自QWidget,程序运行后show出widget1,点widget1上的一个按钮show出widget2,然后呢,点击不是widget2的任意一处都关闭widget2,我重载了event(QEvent *ev)rnwidget2里实现代码如下:rnrnbool Chat::event(QEvent *ev)rnrn if(ev->type() == QEvent::ActivationChange)rn rn if(QApplication::activeWindow() != this)rn rn close();rn rn return QWidget::event(ev);rn rnrn功能倒是实现了,但问题也出现了,在widget2里还有按钮呢,点这个按钮打开文件,选择文件……在widget2还有好多操作,本意要实现的,可是现在点击那个按钮打开文件后widget2关闭了,所以以后的操作就没法实现了rnrn这个要怎么做呢? 不知道大家能不能看懂,功能就类似于qq表情,点完表情<em>窗口</em>要关闭,但是添加表情的时候<em>窗口</em>又不能关闭,我现在的问题就是添加表情的时候表情<em>窗口</em>给关闭了,接下来的表情就不会添加进去了rnrn期待高手们的指导,谢谢!走过路过的都给个意见
TCP接受和发送程序以及长连接的处理方法
在项目开发的过程中,需要和Socket建立一个长连接,项目组开发一部分代码写下来今后便于查找调用。 创建子进程的时候,把所有父进程的代码区拷贝到子进程。子进程继承了所有父进程的代码区。 #include #include #include #include #include #include #include #include #include
TCP协议发送和接受文本消息
引用总结: 对于TCP协议我不想说太多东西,这属于大学课程,又涉及计算机科学,而我不是“学院派”,对于这部分内容,我觉得作为开发人员, 只需要掌握与程序相关的概念就可以了,不需要做太艰深的研究。 我们首先知道TCP是面向连接的,它的意思是说两个远程主机(或者叫进程,因为实际上远程通信是进程之间的通信,而进程则是运 行中的 程序),必须首先进行一个握手过程,确认连接成功,之后才能传输实际的数
安卓TCP通讯客户端接受数据的问题。
我想让手机和电脑通讯,电脑是服务器,手机是客户端。做出来后发现客户端收不到(收到了不显示?)服务器发出的信息。其他一切正常,求这是什么情况?rn客户端代码如下rn[code=java]public class MainActivity extends Activityrn private Button button1 = null;rn private Button button2 = null;rn private Button button3 = null;rn private EditText edit1 = null;rn private EditText edit2 = null;rn private static EditText edit3 = null;rn private int ZT=0;rn public Socket socket=null;rn private String msg=null;rn public PrintWriter out=null;rn public BufferedReader br=null;rn @Overridern protected void onCreate(Bundle savedInstanceState) rn // TODO 自动生成的方法存根rn super.onCreate(savedInstanceState);rn setContentView(R.layout.activity_main);rn button1=(Button)findViewById(R.id.button1);rn button2=(Button)findViewById(R.id.button2);rn button3=(Button)findViewById(R.id.button3);rn edit1=(EditText)findViewById(R.id.edit1);rn edit2=(EditText)findViewById(R.id.edit2);rn edit3=(EditText)findViewById(R.id.edit3);rn button1.setOnClickListener(new listener());rn button2.setOnClickListener(new listener());rn button3.setOnClickListener(new listener());rn rn class listener implements OnClickListenerrnrn @Overridern public void onClick(View v) rn // TODO 自动生成的方法存根rn //按钮1按下,启动通讯线程。rn if(v.getId()==R.id.button1)rn if(ZT==0)rn ZT=1;rn tryrn rn _thread.start();rn rn catch (Exception e)rn rn e.printStackTrace(); rn rn rn rn //按钮2按下,发送信息。rn else if(v.getId()==R.id.button2)rn msg=edit3.getText().toString();rn edit3.setText(null);rn edit3.setText(null);rn tryrn rn out.println(msg);rn out.flush();rn rn catch (Exception e)rn rn e.printStackTrace();rn rn rn //按钮3按下,关闭程序rn else if(v.getId()==R.id.button3)rn finish();rn rn rn rn rn private Thread _thread = new Thread()rn public void run()rn try rn //获取控件里填写的IP地址和端口号,连接服务器rn socket = new Socket(edit1.getText().toString(),Integer.parseInt(edit2.getText().toString()));rn //获得输入输出流rn out =new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true);rn br= new BufferedReader(new InputStreamReader(socket.getInputStream()));rn catch (IOException e1) rn // TODO 自动生成的 catch 块rn e1.printStackTrace();rn rn String in=null;rn Message message=null;rn Bundle bundle=null;rn message = new Message();rn bundle = new Bundle();rn while(true)rn try rn in=br.readLine();rn catch (IOException e) rn // TODO 自动生成的 catch 块rn e.printStackTrace();rn rn //判断是否有信息到达,如果有,取得信息,传递参数。rn if(in!=null)rn bundle.putString("mesg",in);rn message.setData(bundle);rn in=null;rn handler.sendMessage(message);rn rn rn rn rn rn ;rn public Handler handler = new Handler()rn public void handleMessage(Message msg)rn super.handleMessage(msg);rn tryrn //更新控件rn MainActivity.edit3.setText(msg.getData().getString("mesg"));rn rn catch (Exception e)rn rn rn rn rn ;rn rn[/code]rnrn布局文件我就不发了,直接贴界面的图片。rn[img=https://img-bbs.csdn.net/upload/201406/19/1403176737_637303.png][/img]rnrn求大神解答!
TCP协议套接字层接受函数tcp_recvmsg
当用户进程通过信号得知打开的的套接字上有数据等待<em>接受</em>时,用户进程会调用receive或read系统调用读取套接字缓冲区上的数据,实际是调用<em>tcp</em>_recvmsg函数将数据包从内核地址空间复制到用户考地址空间。 1、三个队列 在介绍<em>tcp</em>_recvmsg函数之前先了解TCP协议存放数据包的三个队列: (1)sock数据结构中的sk_backlog队列 简称backlog队列,在前面讲TCP协...
在事务中可用select语句吗,会不会出现死锁
begin transactionrn begin tryrn declare @total_qrnrn --统计PO收货情况rn select @total_q=sum(total_q) from tb_grn where pono=@ponornrn --如果没有收货,则可删POrn if @total_q=0rn beginrn delete tb_pono_hdr where pono=@ponorn delete tb_pono_det where pono=@ponornrn set @execute=1rn endrn elsern beginrn set @execute=0rn endrn rn commit transactionrn end tryrn begin catchrn set @execute=0rn rollback tranrn end catch
关于tcp自定义报文的传输和接受
我现在做个的东西:要求要考虑到各种出错的情况的。rn我定义的消息结构体rnstruct Msgrnrn char srcID[15];rn char destID[15];rn int type;rn int length;rn char buf[1024];rn;rnrn发送放方rnMsg *SendMsg = new Msg;rnstrcpy(SendMsg->srcID,"12345");rnstrcpy(SendMsg->destID,"67890");rnstrcpy(SendMsg->buf,"欢迎访问服务器");rnSendMsg.type = SENDMESSAGE;//#define SENDMESSAGE 1rnSendMsg.length = 15+15+2+2+strlen(SendMsg->buf);rnrnint ret = send(sockConn,(char*)SendMsg,SendMsg.length,0);rnif(ret == SOCKET_ERROR)rnrn closesocket(sockConn);rn WSACleanup();rn return;rnrnrnrn接收方rnrn Msg *SendMsg;rn int left = 0;rn while(1)rn rn int nByte = recv(sockClient,recvBuf+left,1024+left,0);rn if(nByte == SOCKET_ERROR)rn rn closesocket(sockClient);rn WSACleanup();rn return;rn rn if(nByte == 0)rn rn return;rn rn if(nByte+left < (15+15+2+2))//对头部数据的判断rn rn left = nByte;rn continue;rn rn rn RecvMsg =(Msg*)recvBuf;rnrn left = RecvMsg->length-nByte-left;//还需要<em>接受</em>的长度rnrn         //之后这里我就不确定了 rn nByte = recv(sockClient,recvBuf+left,(RecvMsg->length-nByte-left),0);//还需要<em>接受</em>的长度rn if(nByte == SOCKET_ERROR)rn rn closesocket(sockClient);rn WSACleanup();rn return;rn rn if(nByte == 0)rn rn return;rn rn rnrn请问一下大家 如何实现<em>接受</em>方?
为什么tcp发送数据,接受不到onsend消息
采用 mfc得cAsyncSocket的 流传输方式。rnserver端发送文件给客户端,rn客户端只<em>接受</em>文件,rn采用非阻赛方式,响应onsend ,onreceive等事件rn为什么,只发送和<em>接受</em>一段数据后,到阻赛后就收不到了rnrn本想在阻赛之后,获得onsend事件后,将发送状态设为可发rn但是10053 端口阻赛后。等待不到onsend重新可发的消息,rn为什么?rn rn dwRead = f.Read(&data, 1024);rn while (dwRead > 0 ||SendState == TRUE)rn rn int a = my_Socket->Send(&data, dwRead);rn if(a == SOCKET_ERROR)rn rn SendState = FALSE;rn Sleep(20);rn rn if(SendState == TRUE)rn rn dwRead = f.Read(&data, 800);rn rnrn rn f.Close();
tcp方式中recv接受数据的问题
[size=12px]rn[size=10px]最近刚学习<em>tcp</em>编程,rn 服务器端send(sockServer,sendBuf,strlen(sendBuf)+1,0),客户端 recv(sockClient,recvBuf,100,0); rn把客户端的recvBuf用message显示出,发现recvBuf每次不是全部更新。rn比如上次的数据比较长,如"abcdef",这次数据是"zz",但是会显示出"zzcdef",请问是哪方面的问题?rn [/size][/size]
关于mysql如何判断会不会产生死锁的分析
1. 背景: 最近做一个微信小游戏的项目,里边有获取微信昵称的功能,用户访问之后,就会保存用户的昵称,昵称中含有图片、表情等,如果想要正确的存入mysql库中,必须将昵称这个字段的字符集设置成utf8mb4的格式,utf8只能解析三位的编码,而utfmb4能解析图片转换的4位的编码,但是由于项目已经上线,访问量比较大,想更改数据库编码,就有可能出现锁表的情况。过了几天之后访问量有所下降,但是仍然
大量并发调用存储过程 同时执行update 会不会死锁
测试用的 表跟存储过程很简单rn表 test num(int)rnrn[code=sql]rnCREATE PROCEDURE [dbo].[wcs] AS rnbeginrnDECLARE @NEXT_VALUE INT;rnbegin tranrnupdate test set [num]=num+1rnselect @NEXT_VALUE=num from test WITH (UPDLOCK) rnselect @NEXT_VALUErncommit tranrn[/code]rnrn当多个客户端 大量调用存储过程时 假如同时执行 update 那句 <em>会不会</em><em>死锁</em> rn另外加了更新锁 能不能避免 @NEXT_VALUE 返回值重复 rn
这样使用多线程关键字段会不会死锁 EnterCriticalSection
void Close ()rnrnEnter A ; // 完整代码为 EnterCriticalSection (&b); 以下都按此简写。rnEnter B;rnLeave B;rnLeave A;rnrn​rnvoid Read ()rnrnEnter A;rnEnter B;rnLeave A;rnLeave B;rnrn【0】上述的代码会遇到<em>死锁</em>吗?rn我的理解是,rn【1】Enter顺序一致rn【2】每个Enter都正常配对Leave了,但leave顺序可能不一致rn【3】其它非互斥代码均正确 ,不捣乱。rn多个锁在上述前提下,肯定不会<em>死锁</em>。 这对吗?
★★★★这样的模型会不会死锁,或者有没有更好的方法(模型)????★★★★
rnHANDL hForRead;rnHANDl hForWrite;rnrn读进程rn while(1)rn rn SetEvent(hForWrite);rn WaitForSingleObject(hForRead,INFINTE);rn ResetEvent(hForWrite);rn ...写数据rnrnrn写进程rn while(1)rn rn SetEvent(hForRead);rn WaitForSingleObject(hForWrite,INFINTE);rn ResetEvent(hForRead);rn ...读数据rnrnrnrn
一个简单的线程同步问题,这样写会不会死锁
代码如下:rnpublic class Test rnrn private static Test instance = null;rn private boolean stopFlag = false;rn ArrayList users = new ArrayList();rn Object syncObj = new Object();rn rn public static Test getInstance()rn rn if(instance == null)rn instance = new Test();rn return instance;rn rn rn public Test()rn rn InspetUser inspectUser = new InspetUser();rn inspectUser.start();rn rn rn public void add(Object data)rn rn synchronized(syncObj)rn rn //进行添加操作rn rn rn rn public void remove(Object data)rn rn synchronized(syncObj)rn rn //进行移出操作rn rn rn rn public int size()rn rn synchronized(syncObj)rn rn return users.size();rn rn rn rn class InspetUser extends Threadrn rn public void run()rn rn long sleepTime = 5* 60 * 1000;rn while(!stopFlag)rn rn synchronized(syncObj)rn rn Inspect();rn rn rn tryrn rn sleep(sleepTime);rn rn catch(Exception ex)rn rn ex.printStackTrace();rn rn rn rn rn private void Inspect()rn rn //使用users(ArrayList)中的数据进行检测操作rn rn rnrn以上代码主要是用来监测登陆的用户,并隔一段时间监测用户的访问情况(用线程InspetUser监测)
问一个很基础的问题,单进程会不会产生死锁
单进程不会和其它进程争用竟源,也不会和其它进程有什么执行顺序不合理导理<em>死锁</em>。rnrn我的推理是这样,所有不会有<em>死锁</em>。想确认一下自己的判断,诸高手怎么看?跪谢!!!
jquery1.6 API下载
jquery1.6 APIjquery1.6 APIjquery1.6 APIjquery1.6 API 相关下载链接:[url=//download.csdn.net/download/hack517/4141782?utm_source=bbsseo]//download.csdn.net/download/hack517/4141782?utm_source=bbsseo[/url]
vb黑客木马编程(精选大全)下载
其实一些程序的原理很简单,我们只要善于实践,并且能够把所学的只是运用到你的程序中去,我想编出类似的程序是很简单的。如木马、端口扫描器、客户端工具、CGI漏洞扫描器……。VB的Winsock控件虽说不是底层操作。及不上C语言的Socket编程的功能。但实现普通的操作还是很有用的。简单的例子就是Cookie欺骗,用VB来编写这种程序十分简单。 相关下载链接:[url=//download.csdn.net/download/wjshan0808/4295539?utm_source=bbsseo]//download.csdn.net/download/wjshan0808/4295539?utm_source=bbsseo[/url]
网络电视客户端下载
目前网络上 看各大卫士节目 比较清楚 好用的 客户端 呵呵 相关下载链接:[url=//download.csdn.net/download/tzpp1230/4625271?utm_source=bbsseo]//download.csdn.net/download/tzpp1230/4625271?utm_source=bbsseo[/url]
我们是很有底线的