调用Socket.BeginReceive/EndReceive函数的顺序是什么?
例如,我调用BeginReceive两次,一次获取消息长度,第二次调用消息本身.现在的情况是这样的,对于我发送的每条消息,我开始等待它的完成(实际上确认发送的消息,我等待接收到确认后的动作完成),所以我用每个BeginSend调用BeginReceive,但是每个BeginReceive的回调,我检查我是否收到长度或消息.如果我收到消息并完全收到消息,那么我会调用另一个BeginReceive来接收完成的操作.现在这是事情不同步的地方.因为我的一个接收回调是接收字节,它将其解释为消息的长度,实际上它是消息本身.
现在我该如何解决?
编辑:这是一个C#.NET问题:)
这是代码,基本上它太大了,对不起
public void Send(string message)
{
try
{
bytesSent = 0;
writeDataBuffer = System.Text.Encoding.ASCII.GetBytes(message);
writeDataBuffer = WrapMessage(writeDataBuffer);
messageSendSize = writeDataBuffer.Length;
clientSocket.BeginSend(writeDataBuffer, bytesSent, messageSendSize, SocketFlags.None,
new AsyncCallback(SendComplete), clientSocket);
}
catch (SocketException socketException)
{
MessageBox.Show(socketException.Message);
}
}
public void WaitForData()
{
try
{
if (!messageLengthReceived)
{
clientSocket.BeginReceive(receiveDataBuffer, bytesReceived, MESSAGE_LENGTH_SIZE - bytesReceived,
SocketFlags.None, new AsyncCallback(RecieveComplete), clientSocket);
}
}
public void Send(string message)
{
try
{
bytesSent = 0; …Run Code Online (Sandbox Code Playgroud) 干草,不知道我是否错过了rails中帮助者的观点,但我使用了date()帮助器,现在我不知道如何访问返回的变量.
下面是帮助代码
<%=date_select("game", "release_date", :order => [:day, :month, :year])%>
Run Code Online (Sandbox Code Playgroud)
如何在控制器中访问返回的变量?
谢谢
我在jquery ui datepicker上使用altfield和altformat选项向用户显示友好日期,同时在隐藏字段中为数据库格式化日期.唯一的问题是,我不希望在输入框中显示给用户的日期(在视觉上它表明他们可以输入它),我只是希望它显示为文本.我知道我可以设置输入框的样式,因此它看起来不像是一个,但我宁愿只使用div并更新文本.但是,它似乎只适用于输入字段,如果将其设置为div id,则不执行任何操作.
有没有人克服过这个问题?
我想将Info Level&above发送到XML appender和Error/Fatal Level到EventLog appender.
我认为我需要修改配置的根元素,但我正在努力学习语法.对于给定级别或级别的级别,将日志定向到正确的appender的配置语法是什么?
到目前为止这是配置:
<log4net>
<appender name="SomeXmlAppender" type="log4net.Appender.RollingFileAppender">
...
</appender>
<appender name="SomeEventLogAppender" type="log4net.Appender.EventLogAppender">
...
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="SomeXmlAppender" />
<appender-ref ref="SomeEventLogAppender" />
</root>
</log4net>
Run Code Online (Sandbox Code Playgroud)
编辑:谢谢@agileguy.该帖确实包含了我需要的合成语.工作解决方案现在看起来像这样:
<log4net>
<appender name="SomeXmlAppender" type="log4net.Appender.RollingFileAppender">
...
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="INFO"/>
</evaluator>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<acceptOnMatch value="true" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
</appender>
<appender name="SomeEventLogAppender" type="log4net.Appender.EventLogAppender">
...
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="ERROR"/>
</evaluator>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<acceptOnMatch value="true" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
</appender>
<root>
<level value="DEBUG" /> …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用OpenCL来提高我们软件的速度.我们经常使用地图,为简化起见,将地图表示为std :: vector <std :: vector>.OpenCL API将原始的c样式指针作为参数,例如上面的情况中的int*.
我的问题:
谢谢.
我已经在我们的舞台系统上看到了这一点,它已经持续了2-3天.
"服务器无法恢复交易.描述:39000000ef." (使用desc:每次都增加xxx).
堆栈跟踪显示
System.Data.SqlClient.SqlException: The server failed to resume the transaction. Desc:39000000ef.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, …Run Code Online (Sandbox Code Playgroud) 我正在使用围绕FileReader的BufferedReader读取本地文件:
BufferedReader reader = new BufferedReader(new FileReader(fileName));
// read the file
// (error handling snipped)
reader.close();
Run Code Online (Sandbox Code Playgroud)
我需要close()的FileReader为好,或将包装处理这个问题?我见过人们这样做的代码:
FileReader fReader = new FileReader(fileName);
BufferedReader bReader = new BufferedReader(fReader);
// read the file
// (error handling snipped)
bReader.close();
fReader.close();
Run Code Online (Sandbox Code Playgroud)
从servlet调用此方法,我想确保不打开任何句柄.
我们将在几台PC上运行远程GUI,所有PC都与运行主应用程序的中央服务器进行通信.而不是黑客攻击我们自己的手动网络协议和编组层按钮和各种事件,我希望这可以更巧妙地解决这个问题.
实际上,如果您可以为这些Qt对象自动生成网络代理,或以某种方式连接RPC接口上的信号/插槽,或类似的东西,那就太好了.
编写基于Qt的.ui文件的代码生成器应该是可行的,但也许其他人之前尝试过这个(有没有成功)?
另一个想法是在python中使用PyQt和一些机制来处理网络代理对象.
失败的Qt特定的东西,一般如何解决远程GUI?
(使用Web服务器/客户端是不行的,因为我们需要我们的Qt样式,并且可能是一个更快速的GUI和更多花哨的小部件.)
我想在PHP中输出以下字符串:
äöü߀
因此,我手动将其编码为utf8:
äüÃÀ€
所以我的脚本是:
<?php
header('content-type: text/html; charset=utf-8');
echo 'ä ö ü ß €';
?>
Run Code Online (Sandbox Code Playgroud)
前4个字符是正确的(äöüß)但不幸的是,这个符号不正确:
äöüß
你能告诉我我做错了什么吗?我的编辑器(Notepad ++)具有编码(Ansi/UTF-8)和格式(Windows/Unix)的设置.我需要改变它们吗?
我希望你能帮助我.提前致谢!
我们有一个大型Visual Studio 2005 C++/Mfc解决方案,1个项目包含大约1300个源文件(大约650 .h和650 .cpp文件).我们还使用Boost和其他一些库(COM:MSXML,Office).
最近,我添加了一些boost :: multi_index实例来加速一些事情.这一切都在大部分时间汇编.但是现在,当我正在进行完整(发布)重建时,我会在几个模块上遇到编译器崩溃.
Fatal Error C1060: "compiler is out of heap space"
Run Code Online (Sandbox Code Playgroud)
我已经尝试在预编译的头文件中减少包含(删除了除标准MFC头之外的所有内容).另外,我删除了编译器选项/ Zm200(我们在编译预编译头文件之前需要它).
奇怪的是:当我在编译器崩溃后按F7(build)时,构建过程继续没有任何问题(或者至少到下一次编译器崩溃,再次按F7).但是能够在没有任何中断的情况下完成构建将会很棒.
我可以影响各个模块的构建顺序吗?这样,我可以将"有问题"的模块放在流程的开头(并希望崩溃不只是转移到其他模块).
BTW:完整的构建大约需要90分钟.
更新:
谢谢你的回答.我能够摆脱编译器崩溃并显着减少编译时间.这是我做的:
更新2:
上面,我提到"单核机器",实际上是一个较慢的双核机器.
c++ ×2
.net ×1
beginreceive ×1
c# ×1
crash ×1
date ×1
datepicker ×1
encoding ×1
filereader ×1
iis-6 ×1
io ×1
java ×1
jquery-ui ×1
linq ×1
linq-to-sql ×1
log4net ×1
networking ×1
opencl ×1
php ×1
proxy ×1
qt ×1
ruby ×1
sockets ×1
stl ×1
utf-8 ×1