问题列表 - 第13195页

C#Socket.BeginReceive/EndReceive

调用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)

.net c# sockets beginreceive

9
推荐指数
3
解决办法
5万
查看次数

访问日期()变量从rails中的日期助手发送

干草,不知道我是否错过了rails中帮助者的观点,但我使用了date()帮助器,现在我不知道如何访问返回的变量.

下面是帮助代码

<%=date_select("game", "release_date", :order => [:day, :month, :year])%>
Run Code Online (Sandbox Code Playgroud)

如何在控制器中访问返回的变量?

谢谢

ruby ruby-on-rails date

1
推荐指数
1
解决办法
1303
查看次数

jquery ui datepicker - altfield as div而不是input

我在jquery ui datepicker上使用altfield和altformat选项向用户显示友好日期,同时在隐藏字段中为数据库格式化日期.唯一的问题是,我不希望在输入框中显示给用户的日期(在视觉上它表明他们可以输入它),我只是希望它显示为文本.我知道我可以设置输入框的样式,因此它看起来不像是一个,但我宁愿只使用div并更新文本.但是,它似乎只适用于输入字段,如果将其设置为div id,则不执行任何操作.

有没有人克服过这个问题?

jquery-ui datepicker

4
推荐指数
2
解决办法
6650
查看次数

配置log4net以根据级别向不同的appender发送错误

我想将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)

configuration log4net log4net-configuration

42
推荐指数
2
解决办法
2万
查看次数

std :: vector和c风格的数组

我正在尝试使用OpenCL来提高我们软件的速度.我们经常使用地图,为简化起见,将地图表示为std :: vector <std :: vector>.OpenCL API将原始的c样式指针作为参数,例如上面的情况中的int*.

我的问题:

  • 在stl中是否存在实现保证,向量内部是否在内存中连续?
  • 我可以安全地将std :: vector转换为int*并期望它能够工作吗?
  • 在向量向量的情况下,我仍然可以认为这是正确的吗?我希望矢量可以保存其他状态数据,或对齐问题,或者其他东西......
  • 解决这个问题的最佳方法是什么?编写一个自定义的2d数据结构,它包含一个内部的,连续的内存缓冲区并使用它?我必须要复制到矢量/从矢量...

谢谢.

c++ stl opencl

9
推荐指数
2
解决办法
5807
查看次数

使用Linq定期发生InvalidCastException和"服务器无法恢复事务"

我已经在我们的舞台系统上看到了这一点,它已经持续了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)

linq iis-6 sql-server-2008 linq-to-sql

10
推荐指数
1
解决办法
7975
查看次数

我是否需要关闭()FileReader和BufferedReader?

我正在使用围绕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调用此方法,我想确保不打开任何句柄.

java io filereader bufferedreader

179
推荐指数
5
解决办法
15万
查看次数

是否有通过网络运行Qt信号/插槽的想法?

我们将在几台PC上运行远程GUI,所有PC都与运行主应用程序的中央服务器进行通信.而不是黑客攻击我们自己的手动网络协议和编组层按钮和各种事件,我希望这可以更巧妙地解决这个问题.

实际上,如果您可以为这些Qt对象自动生成网络代理,或以某种方式连接RPC接口上的信号/插槽,或类似的东西,那就太好了.

  • 编写基于Qt的.ui文件的代码生成器应该是可行的,但也许其他人之前尝试过这个(有没有成功)?

  • 另一个想法是在python中使用PyQt和一些机制来处理网络代理对象.

  • 失败的Qt特定的东西,一般如何解决远程GUI?

(使用Web服务器/客户端是不行的,因为我们需要我们的Qt样式,并且可能是一个更快速的GUI和更多花哨的小部件.)

proxy networking user-interface qt

9
推荐指数
1
解决办法
4726
查看次数

PHP中的编码问题(UTF-8)

我想在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)的设置.我需要改变它们吗?

我希望你能帮助我.提前致谢!

php encoding utf-8

5
推荐指数
2
解决办法
3万
查看次数

如何解决Visual Studio编译器崩溃

我们有一个大型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分钟.


更新:

谢谢你的回答.我能够摆脱编译器崩溃并显着减少编译时间.这是我做的:

  1. 我从预编译的头文件中删除了所有包含,只是保留了标准的windows/mfc头文件.这迫使我将更多包含添加到其他模块中,但最终所有内容都包含在需要的地方.当然,这一步增加了编译时间,但让我在下一步更有效率.
  2. 我安装了ProFactors IncludeManager的试用版.项目详细信息视图可以导出到Excel,可以非常快速地发现预编译头文件中包含的瓶颈和候选项.
  3. 大多数编译时间浪费了一些头文件,其中包含一堆其他头文件(包括更多......).我不得不使用前向声明来摆脱一些讨厌的依赖.另外,我将一些类/函数从关键标题中移到了自己的模块中.
  4. 在预编译头中放什么?(MSVC)帮助我在预编译头文件中获取包含权限.我添加了STL,Boost,Windows标题.然后添加我们自己的(或多或少稳定的,优化的)标头,以及资源头文件.
  5. 我重复了第3步和第4步,总是用IncludeManager检查新候选人.
  6. 步骤1到5使编译时间(释放模式)下降,从90到大约45分钟.
  7. 我禁用了所有浏览信息的生成,因为我们似乎没有使用它(我找不到任何有关它真正有用的信息......).这又打破了构建过程的6分钟.
  8. 我将/ MP(多处理器支持)开关添加到C++编译器命令.现在重建时间缩短到22分钟.这一切都是在一台核心PC上完成的.
  9. 我将整个解决方案转移到双核PC上.重建项目需要16分钟.
  10. 创建调试版本会快5分钟:
    • 单核机器上17分钟,
    • 双核机器上11分钟.

更新2:

上面,我提到"单核机器",实际上是一个较慢的双核机器.

c++ compiler-construction crash visual-studio-2005

11
推荐指数
1
解决办法
8981
查看次数