三代测序新手学习:有一个问题请教,求大佬指点 10C

由于之前没有接触过生物信息测序,现在刚开始运行一个校正工具遇到了一个和配置文件有关的问题,但是显示不能正常运行脚本文件,没有其他错误提示,怎么解决无从下手。。。请大佬指点迷津~

我现在用**MECAT2**https://github.com/xiaochuanle/MECAT2
跑一个3.4g左右大小的转录组数据,运行环境应该没有问题,因为我是在一个16g内存的阿里云服务器上做实验的,官方给的800M大的大肠杆菌基因组数据我也跑成功了,现在我按照示例 改了下运行时用的配置文件 ,但是在校正阶段就失败了,错误截图如下:

图片说明

命令行中 some_parts_config_file.txt是配置文件,这个命令就是根据 配置文件内容 校正数据,结果却**failed to run script**,我看了这个脚本文件,只有短短几行,且和运行示例时的脚本文件一样,所以问题应该不在这个 脚本文件。

下面是我的配置文件,官网上有个模板我按照模板 填了自己的信息,但不并不确定是否填对了,所以想请 大佬们帮我看下 ,是不是因为自己的配置文件错了才运行不下去。(路径没有问题)
图片说明

其中各字段的意义如下:从官网上截图的
图片说明

在此感谢所有帮助鄙人的大神们~

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
三代测序组装工具Canu学习笔记
Canu简介 Canu是Celera的继任者,能用于组装PacBio和Nanopore两家公司得到的测序结果。 Canu分为三个步骤:纠错,修整和组装。 下载测试数据 # 下载 pacbio 测试数据 wget -c http://gembox.cbcb.umd.edu/mhap/raw/ecoli_p6_25x.filtered.fastq -O pacbio.fastq # 下载 nanop...
简单算法问题,求大佬指点
随机取5个数,五个数相加等于100,有多少种组合,用程序写出
三代Pacbio进行细菌16S全长测序
做扩增子测序你一定纠结过我到底测细菌的哪个区呢,V3+V4,或者V4+V5?细菌的16S全长一共有V1-V9九个区不管选一个区还是两个区,我们在进行物种注释时都无法将其准确注释到物种水平而仅仅是属水平。这也与目前最为广泛所有的Illumina技术特点有关,尽管其不断发展可以扩大其测序的通量,但其进行测序反应时必须让每个DNA站立结合在Flow cell 上的每个Index上,如果每个DNA长度太长...
求大佬指点
怎判断一个数是不是素数?新人求指教。break和continue应该怎么用啊?老是用错rn
迷茫了 求大佬指点下
谭浩强的那本c语言看完了 但是不知道能做什么程序 现在再看The C Programming Language 所以我现在就想写点小程序但不知道写什么 求前辈指点下[img=https://img-bbs.csdn.net/upload/201903/07/1551933558_310311.png][/img]
求大佬指点。。Swing
我在写一个酒店管理系统。rn比如,我点击101按钮,,弹出一个窗口,等我录完信息后,点击保存。。101按钮变为红色。rn我是这样写的:rnComponent[] components = new HotelNowJPanel().getComponents();rnJButton[] button = new JButton [components.length] ;rnbutton [0]= (JButton) components [0];//获取第一个按钮101rnbutton[0].setBackground(Color.red);rn可是不成功。。有什么别的解决办法呢
求大佬指点分析函数
[img=https://img-bbs.csdn.net/upload/201804/23/1524474523_797625.png][/img]rnrn上面是查询出的结果rnrn下面是预期的结果,rnrn每一列的a4 = a1+a2-a3rnrn每一列的a1等于上一行计算出来的a4rnrn不知有没有办法实现这个效果
新手求大佬解决问题
#include rnint main(void)rnrn int age;//变量rn float assets;//变量rn char pet[40];//字符数组,用于储存字符串rn printf("Enter your age ,assets,and fovorite pet.\n");rn scanf_s("%d %f", &age, &assets);rn scanf_s("$S", pet);rn printf("%d $%.2f %s\n", age, assets, pet);rn return 0;rnrnrn这是我按照书上打的代码。rnvs报错:rn 严重性 代码 说明 项目 文件 行 禁止显示状态rn警告 C4474 scanf_s: 格式字符串中传递的参数太多 Project2 c:\users\shinelon\desktop\project2\project2\源1.cpp 9 rn 严重性 代码 说明 项目 文件 行 禁止显示状态rn错误 LNK2005 _main 已经在 源.obj 中定义 Project2 C:\Users\shinelon\Desktop\Project2\Project2\源1.obj 1 rn 严重性 代码 说明 项目 文件 行 禁止显示状态rn错误 LNK1169 找到一个或多个多重定义的符号 Project2 C:\Users\shinelon\Desktop\Project2\Debug\Project2.exe 1 rn 请问一下怎样解决。rn
制作网站跳转的棘手问题,新手,求大佬耐心指点!!!
[img=https://img-bbs.csdn.net/upload/201704/27/1493265066_90396.png][/img]rn[img=https://img-bbs.csdn.net/upload/201704/27/1493265142_356636.png][/img]rn我想点击下面的目录,然后自动刷新上面视频内容,而整个网页别的部分不改变。只想让上面那一小块播放视频的div自动刷新成新的视频内容,但具体怎么实现不会,最笨的方法就是做出这些目录个数的播放页,但这几乎不可能,有没有别的方法可以实现呢,我观察别的网站刷新时,都是在URL后面有个什么....../id=xx在一直改变,我这有上千个视频呢,他们是怎么实现的???求解答,急急急!!!
新手问题,求指点。
我的Qt SDK之前已经搭好了,写了很长一段时间的桌面工程都没出什么错rn最近想写一下symbian的程序,就新建了Qt gui应用项目,选择了symbian设备而不是桌面,rn但是运行生成的是exe文件,而且不是sisrn如果构建时选择for symbian的话就出来个手机图片但上面有个叉叉。rn各位指点下我该怎么办
有一个算法题请大佬指点!
有一个算法题请大佬帮忙看一下。rn在某个游戏中,一个游戏主角有10个位置可以放置英雄卡牌,例如位置1可以为主角添加英雄卡牌生命值的5%,位置2可以为主角添加英雄卡牌攻击力的7%(这里面有些位置增加的属性是一样的,例如可以有两个位置都增加生命)。。。rn游戏主角有一些特性如生命值、攻击力、魔法防御、物理防御等。。。rn现在我手里有20个英雄卡牌,部分英雄偏生命和攻击,例如生命12000攻击8000物防1200法防1200,另外一些英雄则偏法防,总之每个英雄的各项数值不一样。。。rn请问如何在合适的位置放上合适的英雄卡牌,使主角所获得的“属性增加总值”最大。
我有一个微服务相关的疑惑,求大佬指点一下.
我在做课程设计的时候产生了一个疑问,打个比方:我现在有两个微服务,一个是用户服务,已经提供了通过访问 /users/id 的方式获取完整用户信息的功能,另一个是B服务,这个 B 服务需要使用一个通过用户 id 获取用户名的功能,且仅仅只需要用户名即可(并且这个功能并不想暴露给用户,emm,对于这里的确不合理,但这里只是举个例子,能懂我的意思就行)。如果直接通过 feign 访问 /users/xx 获取完整用户信息再取出用户名,总感觉太多余;如果在用户服务的 Controller 里添加通过 id 获取用户名的 handler 的话,为了让 B 服务访问,而普通用户不能访问,则需要在网关处做额外的配置。(我目前就只能想出这两个方法,如果能有更简便的方法,求指点啊。。。)rn 与之相比,在 SOA 架构下的话,我感觉好像就能很容易解决,只需要往 UserService 接口中添加这个功能,并实现即可,B 服务可以从注册中心直接拿到 UserService 中的这个功能,不会出现微服务中必须在 controller 中写 handler 的情况,也就不会出现暴露给用户的问题。rn 归根结底而言,我现在感觉到的问题就是,微服务之间的数据传递要通过 http 请求,并返回 json 的方式获取,而 json 中的数据往往都是 View Object,对于用户而言,无可厚非,但对于项目中的其他服务而言,这个 json 中的数据可能有太多都是无用的,往往更需要的是 Data Transfer Object ,可这些数据很可能是不能暴露给用户的。如果非要这么做,就必须在网关做额外处理。相较 SOA 着实麻烦了很多,所以就想问问大佬们,在微服务架构下,这样的情况有什么好的方式去处理?(我现在只是个刚大三的学生,0 工作经验啊,如果有什么说的不对的地方求轻喷。。。)
初学python 求大佬指点!
初学python,遇到一点疑问,请大佬指点一二!多谢!看廖雪峰老师python3.X教程,发现一个疑问,以下为廖老师原文:字符串是以单引号'或双引号"括起来的任意文本,比如'abc',"xyz"等等。请注意,''或""本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'只有a,b,c这3个字符。如果'本身也是一个字符,那就可以用""括起来,比如"I'm OK"包含的字符是I,',m,空...
新手求大佬帮忙看看
刚学C语言,实在没法理解。昨天自己憋了一下午,也没看出什么地方有问题。rn[code=c]#pragma warning(disable:4996)rn#includernint main()rnrn char str1[30], str2[30];rn printf("please enter string:");rn gets(str1);rn printf("which character that begin to copy? ");rn int m;rn scanf("%d", &m);rn void str_c(char x[], char y[], int n);rn str_c(str1, str2, m);rn printf("%s\n", str2);rn return 0;rnrnvoid str_c(char x[], char y[], int n)rnrn int i;rn for (i = n; i != '\0'; i++)rn rn y[i - n] = x[i];rn y[i - n] = '\0';rnrn[/code]rnrnrn后面写的str_c 函数目的是想把字符串x中第n个字符后面的复制到字符串y中去。真的无法理解为什么这么写会运行出错?rn有没有前辈解释一下哪错了?谢谢
新手菜鸟请教一个算法问题,求高人指点
在一个时间内有若干小任务,彼此之间可能有时间冲突,写一段代码实行任务的合理安排,原则就是尽可能多的完成这些任务,求算法、求实行思路。。。
array数组的问题,求大佬指点
public class Main n public static double average(double[] array) n double temp = 0;n double sum = 0;n for (int i = 0; i < array.length; i++) n sum = sum + array[i];n n temp = sum / array.length;n return temp;n nn public static void main(String[] args) n File file = new File("C:/Users/15002/Desktop/文件/gongzuo.xlsx");n ArrayList> result = ExcelUtil.readExcel(file);n ArrayList result2 = null;n double rand[] = new double[50];n n double av;n java.util.Random r = new java.util.Random();n for (int j = 0; j < 10000; j++) n for (int i = 0; i < 50; i++) n try n rand[i] = Double.valueOf(result.get(r.nextInt(62080)).get(0).toString()).doubleValue();n catch (NumberFormatException e) n e.printStackTrace();n n System.out.println(rand[i]);n av = average(rand);n System.out.print("平均值为:" + av);n result2.add(av);n n n n n n n nn运行结果:n12.0nException in thread "main" 平均值为:0.24java.lang.NullPointerExceptionn at Main.main(Main.java:35)n
大佬们,请教一个问题!
就是这个简单的程序,我传递引用时会出错:rn[code=Java]rnimport java.io.*;rnclass Testrnpublic static void main(String[] args)rnrn int x = 3;rn int y = 4;rn changeXY(x,y);rnrnpublic static void changeXY(int& x, int& y)rnrn x = (x+y)/2;rn y = x-y;rn x = x-y;rn y = (x-2*y)/2;rn System.out.println(x);rn System.out.println(y);rnrnrn[/code]rn错误为:需要,这是为什么啊,难道java不能传递引用参数???
各位大佬!请教一个问题?
我想当鼠标移动到某些地方时,出现一些提示文字!我的做法是用 实现,问题是当提示文字很长时,所有的文字都在一行显示,如何换行显示???
新手求指点!!问题何在??
abstract class A3rn public abstract void print();rn A3() print();rnrnclass B3 extends A3rn private int i=2;rn public void print()rn System.out.println("i= "+this.i);rnrnpublic class Test314 rn public static void main(String[] args)rn B3 r=new B3();rnrn这段程序的打印结果是i=0,为什么?求高人详解!谢谢啦!! rn问题补充:System.out.println("i= "+this.i); 和 System.out.println("i= "+i);的打印结果一样。怎么回事?求解答。谢谢啦!rn
新手问题,求热心人指点。
[code=C/C++]#include rnusing namespace std ;rntypedef int ElemType ;rnstruct Node rn ElemType data ;rn Node* next ;rn;rntypedef Node* LinkList ;rnLinkList CreateList_Tail (LinkList *L ) //创建链表 后插法 rnrn int n ;rn cout << "输入链表长度:" ;rn cin >> n ;rn *L = ( LinkList ) malloc (sizeof ( Node ) ) ;rn ( *L )->next = NULL ;rn LinkList p ;rn p = *L ;rn for ( int i = 1; i <= n; i++ ) rn rn p = ( LinkList ) malloc ( sizeof ( Node ) ) ;rn ElemType data = ( ElemType ) malloc ( sizeof ( ElemType ) ) ;rn printf ( "输入第%d个元素" , i ) ; rn cin >> data ;rn p->data = data ;rn p->next = p ;rn rn p->next = NULL ;rn return *L ;rnrn//Traversal 遍历链表;rnvoid Traversal ( LinkList L )rnrn LinkList p = ( LinkList ) malloc ( sizeof ( Node ) ) ;rn p = L ;rn while ( p )rn rn int i = 1 ;rn cout << p->data ;rn p = p->next ;rn if ( i%7 == 0)rn cout << endl ;rn i++ ;rn rnrnint main ()rnrn LinkList *L = ( LinkList* ) malloc ( sizeof ( Node ) ) ;rn LinkList l = CreateList_Tail ( L ) ;rn Traversal ( l ) ;rn return 0 ;rn[/code]rn rn遍历那里出问题了,不知道是什么问题,是输入那里还是输出那里的问题,求大侠指点迷津!
新手求指点,坦克大战的问题
//这个是Tank类里的一个方法rnpublic Bullet fire() rn int x = this.x + MyTank.WIDTH/2 - Bullet.WIDTH/2;rn int y = this.y + MyTank.HEIGH/2 - Bullet.HEIGH/2;rn Bullet bullet = new Bullet(x, y, barrelDir, tc);rn tc.bullets.add(bullet);//运行的时候出现空指针错误,说是这里,好像是没添加进去,用DeBug查的时候也是在这里就跳进了一个很多很长的代码里,不知道为什么会出现这种错误,求解,如果代码不详细我还会再贴,谢谢了rn return bullet;rn rnrn我在TankClient类里有rnrnList bullets = new ArrayList();rn....rnpublic void paint(Graphics g) rn myTank.draw(g);rn rn for(int i=0; i
新手!!!有问题请教!!!!
小弟刚接触软件工程!现在要搞一份数据流图,无从下手!!特向各位大虾请教,数据流图应怎么绘制,用什么比较好,要注意些什么问题??有可能发一份样图给我最好,小弟先谢过了!!!!rnjeff_107@sohu.com
新手,有问题请教!
我在XteamServer下装tomcat3.2.4rn./startup.sh start启动rn然后 rnlynx h运行ttp://localhost:8080rn却出现错误:rnunable to connect to remote hostrn请问为什么啊?rn请教各位高手!rn急!rn
二代三代转录组测序分析实战班
转录组大家都很熟悉了,我们之前也有几篇介绍: 转录组分析的正确姿势 39个转录组分析工具,120种组合评估(转录组分析工具哪家强-导读版) 120分的转录组考题,你能得多少 年前开了一期二代转录组线下研讨班,效果挺好,大家学的很扎实,不少朋友又继续参加了后续其它内容的培训课程。在一起学习,一起聊天,互相有些收获;能得到持续的认可,是我们最好的动力。 上次转录组培训后,还有不少新朋友希望能...
关于三代基因测序,你所需要知道的都在这儿!
关于三代基因测序,你所需要知道的都在这儿! 一、导读: 在大部分投资者对“二代测序”(NGS)还没有搞清技术细节的情况下,“三代测序”(3GS)又火了。 6月17日,医药板块中基因测序相关标的在“三代测序技术获得重大突破”的新闻影响上出现明显涨幅,我们也接到较多投资者对相关新闻的背景及观点的询问。为此,我们结合各方面资料归纳总结了三代基因测序的发展历史、原理、优劣势,以及国内外布局的公司等(...
使用RESM计算表达量(二代+加三代测序)
    最近使用三代+三代做无参转录组测序,感觉公司算的表达量不怎么靠谱,决定亲自算一算。摸索了好久,做个笔记,供大家参考。 1,安装RESM软件: 下载地址则http://deweylab.github.io/RSEM/,下载最新版的安装吧! 安装:make  make install  没有root权限使用make install 可能出错,使用 make DESTDIR=/in...
求高手指点新手学习数据结构
rnrnrnrnrn [b]我室友想利用暑假学习数据结构,网上很多人推荐用严蔚敏的那本,可是他又看到很多人说rn 初学不推荐那本书,各种难懂加伪代码,加习题答案不全,于是他又纠结了 ,他后来找到了一本rn 号称经典的Ellis Horowitz的数据结构,可是我觉得初学用外国的教材不是很好,我们都只有crn 语言基础,没学过离散数学什么的,大家在学习辅导书以及学习方法方面有什么好的建议吗[/b]
想请教一个问题 求高手指点
大家在设计数据库时,如果在一个字段里记录的内容有可能有多个值,大家会不会用','或者‘|’ 等,分割内容, 在读取数据库的时候再根据 ','或者'|' 等分割内容。 还是另起一个表。 感觉如果另起一个表,数据结构复杂了, 可是不另起表,读数据的时候复杂, 甚至怕以后需要统计数据的时候更复杂,不知道怎么取舍。 求高手指点
请教一个问题的思路,求高人指点!
公司做的是数据分析。现在大致的需求是这样的:rn配置页面,给出一些配置参数,(主要是数据源),提交自动创建数据分析页面,页面主要有两个控件,chart报表控件和gridview控件。rn这几天一直想思路,难道要动态生成aspx页面吗,自己试了下,不行。rn现在思路被卡住了,还望高人指点!给个思路,万分感谢!
新手请教一个求百分比的问题?
两个int型数值相除,如何才能让结果保留两位小数?然后再同一个整数如100相乘?
新手上路 求指点
老师说一开始大家先照着书上的程序原样打入试试rn#includern#includern#includernmain()rnrn int magic;rn int guess;rn stand(time(NULL));rn magic=rand()%100+1;rn printf("*************************************\n");rn printf("************Guess number!*************\n");rn printf("*************************************\n");rn printf("Welcome to here!!\n\n\n");rn printf("Please guess a magic number(1-100)\n");rn scanf("%d",&guess);rn if (guess>magic)rn rn printf("Wrong ! Too high!!\n");rn rn else if(guess
新手 求指点
怎么将web页面导入到word中?
新手学生求指点
小第还是学生,在学习asp.net.自己电脑是win7,iis为7.0,sql是2008版,现在越到的问题貌似是asp.net中的sql语句不起作用了,我在sql新建查询都可以,但是放在asp.net里面就不起作用了,代码如下,额,初学望各位老人解答。rn SqlConnection con = new SqlConnection(" Data Source=WIN-JKNISFADCO4;Initial Catalog=user;User ID=sa;Password=****;Integrated Security=SSPI");rn string sqlstr = "select 密码 FROM [user].[dbo].[用户] where 用户名='dadad'";rn SqlCommand test = new SqlCommand(sqlstr, con);rn con.Open();rn string test1 = test.ExecuteScalar().ToString();rn TextBox1.Text = test1.ToString();rn SqlCommand testcommed = new SqlCommand("delete from [user].[dbo].[用户] where 用户名='2'", con);rn string s = "insert into [user].[dbo].[用户](用户名,密码) values('qwe','qwe')";rn SqlCommand s1 = new SqlCommand(s, con);rn con.Close();rn rn其中第1,2行是连接数据库这个没问题,然后第3,4,5,6,7,行可以用,但是第8,9,10貌似sql无语都是无效的。删除,插入都无效,什么数据库用户权限啊什么都设置过,百度过,真心不知道这个是怎么回事,求高手解答!
新手求大神指点
[code=javascript]rnfunction test()rn var customFormula=;//局部函数rn var data=a:"aaa",b:"bbb",c:"ccc" rn function $(n)rn return data[n];rn rn this.CustomFormulaNameAdd=function(name,FN)rn var fn="customFormula['"+name+"']="+FN;rn eval(fn);rn return name;rn ;rn this.getData=function(fn)rn alert(customFormula[fn]());rn ;rnrnvar T=new test();rnT.CustomFormulaNameAdd('aaa','function()return $("a")+$("b");');rnT.getData("aaa");rn[/code]
新手求指点
想学学一些有用的东西,求帮助!!!!
IOCP新手求指点
void CIOCPServer::HandleIO(DWORD dwKey, CIOCPBuffer *pBuffer, DWORD dwTrans, int nError) rn rn CIOCPContext *pContext = (CIOCPContext *)dwKey; rnrn // 1)首先减少套节字上的未决I/O计数 rn if(pContext != NULL) rn rn ::EnterCriticalSection(&pContext->Lock); rnrn if(pBuffer->nOperation == OP_READ) rn pContext->nOutstandingRecv --; rn else if(pBuffer->nOperation == OP_WRITE) rn pContext->nOutstandingSend --; rnrn ::LeaveCriticalSection(&pContext->Lock); rnrn // 2)检查套节字是否已经被我们关闭 [2009.8.9 bak Lostyears][如果关闭则释放剩下的未决IO] rn if(pContext->bClosing) rn rnrn if(pContext->nOutstandingRecv == 0 && pContext->nOutstandingSend == 0) rn rn ReleaseContext(pContext); rn rn // 释放已关闭套节字的未决I/O rn ReleaseBuffer(pBuffer); rn return; rn rn rn else rn rn RemovePendingAccept(pBuffer); // [2009.8.9 bak Lostyears][sListen关联了iocp, 关联时dwKey为0, 所以当有新连接发送数据时会执行到此] rn rnrn // 3)检查套节字上发生的错误,如果有的话,通知用户,然后关闭套节字 rn if(nError != NO_ERROR) rn rn if(pBuffer->nOperation != OP_ACCEPT) rn rn NotifyConnectionError(pContext, pBuffer, nError); rn CloseAConnection(pContext); rn if(pContext->nOutstandingRecv == 0 && pContext->nOutstandingSend == 0) rn rn ReleaseContext(pContext); rn rn rn rn else // 在监听套节字上发生错误,也就是监听套节字处理的客户出错了 rn rn // 客户端出错,释放I/O缓冲区 rn if(pBuffer->sClient != INVALID_SOCKET) rn rn ::closesocket(pBuffer->sClient); rn pBuffer->sClient = INVALID_SOCKET; rn rn rnrn ReleaseBuffer(pBuffer); rn return; rn rn // 开始处理 rn if(pBuffer->nOperation == OP_ACCEPT) rn rn if(dwTrans == 0) // [2010.5.16 bak Lostyears]如果AcceptEx的数据接收缓冲区设为0, 一连接上就会执行到这 rn rnrn if(pBuffer->sClient != INVALID_SOCKET) rn rn ::closesocket(pBuffer->sClient); rn pBuffer->sClient = INVALID_SOCKET; rn rn rn else rn rn // 为新接受的连接申请客户上下文对象 rn CIOCPContext *pClient = AllocateContext(pBuffer->sClient); rn if(pClient != NULL) rn rn if(AddAConnection(pClient)) rn rn // 取得客户地址 rn int nLocalLen, nRmoteLen; rn LPSOCKADDR pLocalAddr, pRemoteAddr; rn m_lpfnGetAcceptExSockaddrs( rn pBuffer->buff, rn pBuffer->nLen - ((sizeof(sockaddr_in) + 16) * 2), // [2010.5.16 bak Lostyears]和AcceptEx相应参数对应 rn sizeof(sockaddr_in) + 16, rn sizeof(sockaddr_in) + 16, rn (SOCKADDR **)&pLocalAddr, rn &nLocalLen, rn (SOCKADDR **)&pRemoteAddr, rn &nRmoteLen); rn memcpy(&pClient->addrLocal, pLocalAddr, nLocalLen); rn memcpy(&pClient->addrRemote, pRemoteAddr, nRmoteLen); rnrn // [2010.1.15 add Lostyears][加入KeepAlive机制] rn BOOL bKeepAlive = TRUE; rn int nRet = ::setsockopt(pClient->s, SOL_SOCKET, SO_KEEPALIVE, (char*)&bKeepAlive, sizeof(bKeepAlive)); rn if (nRet == SOCKET_ERROR) rn rn CloseAConnection(pClient); rn rn else rn rn // 设置KeepAlive参数 rn tcp_keepalive alive_in = 0; rn tcp_keepalive alive_out = 0; rn alive_in.keepalivetime = 5000; // 开始首次KeepAlive探测前的TCP空闲时间 rn alive_in.keepaliveinterval = 1000; // 两次KeepAlive探测间的时间间隔 rn alive_in.onoff = TRUE; rn unsigned long ulBytesReturn = 0; rn nRet = ::WSAIoctl(pClient->s, SIO_KEEPALIVE_VALS, &alive_in, sizeof(alive_in), rn &alive_out, sizeof(alive_out), &ulBytesReturn, NULL, NULL); rn if (nRet == SOCKET_ERROR) rn rn CloseAConnection(pClient); rn rn else rn rn // 关联新连接到完成端口对象 rn ::CreateIoCompletionPort((HANDLE)pClient->s, m_hCompletion, (DWORD)pClient, 2); rnrn // 通知用户 rn pBuffer->nLen = dwTrans; rn OnConnectionEstablished(pClient, pBuffer); rnrn // 向新连接投递几个Read请求,这些空间在套节字关闭或出错时释放 rn for(int i=0; isClient); rn pBuffer->sClient = INVALID_SOCKET; rn rn rnrn // Accept请求完成,释放I/O缓冲区 rn ReleaseBuffer(pBuffer); rnrn // 通知监听线程继续再投递一个Accept请求 rn ::InterlockedIncrement(&m_nRepostCount); rn ::SetEvent(m_hRepostEvent); rn rn else if(pBuffer->nOperation == OP_READ) rn rn if(dwTrans == 0) // 对方关闭套节字 rn rn // 先通知用户 rn pBuffer->nLen = 0; rn NotifyConnectionClosing(pContext, pBuffer); rnrn // 再关闭连接 rn CloseAConnection(pContext); rn // 释放客户上下文和缓冲区对象 rn if(pContext->nOutstandingRecv == 0 && pContext->nOutstandingSend == 0) rn rn ReleaseContext(pContext); rn rn ReleaseBuffer(pBuffer); rn rn else rn rn pBuffer->nLen = dwTrans; rn // 按照I/O投递的顺序读取接收到的数据 rn CIOCPBuffer *p = GetNextReadBuffer(pContext, pBuffer); rn while(p != NULL) rn rn // 通知用户 rn OnReadCompleted(pContext, p); rn // 增加要读的序列号的值 rn ::InterlockedIncrement((LONG*)&pContext->nCurrentReadSequence); rn // 释放这个已完成的I/O rn ReleaseBuffer(p); rn p = GetNextReadBuffer(pContext, NULL); rn rnrn // 继续投递一个新的接收请求 rn pBuffer = AllocateBuffer(BUFFER_SIZE); rn if(pBuffer == NULL || !PostRecv(pContext, pBuffer)) rn rn CloseAConnection(pContext); rn rn rn rn else if(pBuffer->nOperation == OP_WRITE) rn rn if(dwTrans == 0) // 对方关闭套节字 rn rn // 先通知用户 rn pBuffer->nLen = 0; rn NotifyConnectionClosing(pContext, pBuffer); rnrn // 再关闭连接 rn CloseAConnection(pContext); rnrn // 释放客户上下文和缓冲区对象 rn if(pContext->nOutstandingRecv == 0 && pContext->nOutstandingSend == 0) rn rn ReleaseContext(pContext); rn rn ReleaseBuffer(pBuffer); rn rn else rn rn // 写操作完成,通知用户 rn pBuffer->nLen = dwTrans; rn OnWriteCompleted(pContext, pBuffer); rn // 释放SendText函数申请的缓冲区 rn ReleaseBuffer(pBuffer); rn rn rn rnrn// 当套件字关闭或出错时通知 rnvoid CIOCPServer::NotifyConnectionClosing(CIOCPContext *pContext, CIOCPBuffer *pBuffer) rn rn ::EnterCriticalSection(&m_CloseOrErrLock); rn if (!pContext->bNotifyCloseOrError) rn rn pContext->bNotifyCloseOrError = true; rn OnConnectionClosing(pContext, pBuffer); rn rn ::LeaveCriticalSection(&m_CloseOrErrLock); rn rnrnBOOL CIOCPServer::SendText(CIOCPContext *pContext, char *pszText, int nLen) rn rn CIOCPBuffer *pBuffer = AllocateBuffer(nLen); rn if(pBuffer != NULL) rn rn memcpy(pBuffer->buff, pszText, nLen); rn return PostSend(pContext, pBuffer); rn rn return FALSE; rn rnrnvoid CIOCPServer::CloseAConnection(CIOCPContext *pContext) rn rn // 首先从列表中移除要关闭的连接 rn ::EnterCriticalSection(&m_ConnectionListLock); rnrn CIOCPContext* pTest = m_pConnectionList; rn if(pTest == pContext) rn rn m_pConnectionList = pTest->pNext; // [2009.8.9 mod Lostyears][old: m_pConnectionList = pContext->pNext] rn m_nCurrentConnection --; rn rn else rn rn while(pTest != NULL && pTest->pNext != pContext) rn pTest = pTest->pNext; rn if(pTest != NULL) rn rn pTest->pNext = pContext->pNext; rn m_nCurrentConnection --; rn rn rnrn ::LeaveCriticalSection(&m_ConnectionListLock); rnrn // 然后关闭客户套节字 rn ::EnterCriticalSection(&pContext->Lock); rnrn if(pContext->s != INVALID_SOCKET) rn rn ::closesocket(pContext->s); rn pContext->s = INVALID_SOCKET; rn rn pContext->bClosing = TRUE;rnrn ::LeaveCriticalSection(&pContext->Lock); rn rn
新手上路,求指点!
在VS2008中,用MessageBox(LPCTSTR(Buf));以对话框读取内容时出现乱码是怎么回事?
新手求高手指点
--------------------------------------------------------------------------------rnrn我写了一点关于二叉树的代码,但是运行时总出现问题。我通过调试发现我的GreatBiTree(BiTree &T)函数似乎没有运行,但我不知道是什么问题,希望高手指点迷津。当然也欢迎各位都进来讨论一下,我在这里先谢谢各位了!!rn我的完整的代码如下:(大家可以搞到自己的机器上运行一下(Vc++6.0))rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include //exit()rn#include //cout,cinrn#define TURE 1rn#define FALSE 0rn#define OK 1rn#define ERROR 0rn#define INFEASIBLE -1rntypedef int Status;rntypedef int Boolean;//Booleanshi 是布尔类型,其值是TURE和FALSErntypedef int SElemType;rn#include rntypedef char TElemType;rn#define MAX_TREE_SIZE 5rntypedef struct BiTNode//定义了二叉树的结构rnrnTElemType date;rnstruct BiTNode *lchild,*rchild;rnBiTNode,*BiTree;rnint i=0;rnchar ch;//是用来输入时的一个变量(全局变量)rnStatus CreateBiTree(BiTree &T)//这段代码是按照书(《数据结构》严蔚敏 吴伟民版)上来写的rnrnrnrncin>>ch;rnif(ch=='#')rnrnT=NULL;rncout<<"输入结束!!"<date=ch;rnCreateBiTree(T->lchild);rnCreateBiTree(T->rchild);rnrnrnrnreturn OK;rnrnStatus PrintElement(TElemType e)rnrnprintf("%c",e);rnreturn OK; rnrnStatus PreOrderTraverse(BiTree T,Status(* visit)(TElemType e))//这是先序遍历,也是根据那本书写的rnrn//PrintElement(T->date);rnif(T)rnrnif(PrintElement(T->date))rnrnif (PreOrderTraverse(T->lchild, visit))rnif (PreOrderTraverse(T->rchild, visit)) rnreturn OK;rnrnreturn ERROR;rnrnrnelsernrnreturn OK;rnrnrnvoid main ()rnrn//TElemType e;rnBiTree T;rnCreateBiTree(T);//在这里构建一个树,但是在输入每个节点值的时候总出现问题rnPreOrderTraverse(T,PrintElement);rn
C#新手求指点
while (sr1.Read())rn rn textBox2.Text += sr1["Qstart"].ToString() + " 到 " + sr1["Qend"].ToString() + "\r\n\r\n"+"\n\n";rn rnrn rnrn在文本框中显示的时间我想去掉后面的0:00::00该怎么改
cad新手求指点
刚开始接触cad,学到基本图形的画法和标注。谁能介绍一本新手入门的书籍,越详细越好,最好有练习题的那种书,网上能买到的。麻烦各位大神把书的名字提供下《。。。。。。。》,拜谢。
相关热词 c# 线程结束时执行 c# kb mb 图片 c# 替换第几位字符 c#项目决定成败 c# 与matlab c# xml缩进 c#传感器基础 c#操作wps c# md5使用方法 c# 引用父窗口的组件