我正在使用UNIX域套接字将文件描述符传输到另一个进程.这工作正常,但是当我第一次尝试使用select()查看套接字是否可写时,sendmsg()调用失败并显示错误的文件描述符错误.
如果我不将文件描述符信息添加到msghdr结构中,sendmsg()函数与select()一起工作正常,因此冲突似乎在select()和传输文件描述符之间.
我在select(),recvmsg()或任何其他的手册页中找不到任何关于此的信息.由于这需要成为将文件描述符分发给多个进程的服务器,我仍然希望能够使用select().
有什么我可以做的工作,或者有人知道其他解决方案吗?
平台是Ubuntu 10.4.
这是初始化结构的代码:
struct cmsghdr_fd : public cmsghdr
{
int fd;
};
int sendfd(int sock, int fd)
{
struct msghdr hdr;
struct iovec data;
struct cmsghdr_fd msgdata;
char dummy = '*';
data.iov_base = &dummy;
data.iov_len = sizeof(dummy);
hdr.msg_name = NULL;
hdr.msg_namelen = 0;
hdr.msg_iov = &data;
hdr.msg_iovlen = 1;
hdr.msg_flags = 0;
hdr.msg_control = &msgdata;
hdr.msg_controllen = sizeof(msgdata);
struct cmsghdr* cmsg = CMSG_FIRSTHDR(&hdr);
cmsg->cmsg_len = hdr.msg_controllen;
cmsg->cmsg_level = SOL_SOCKET;
cmsg->cmsg_type = SCM_RIGHTS;
*(int*)CMSG_DATA(cmsg) …Run Code Online (Sandbox Code Playgroud) 当我点击它时,editText没有失去我的应用程序中的焦点,它始终具有橙色边框和黑色线条光标..我根据这周围的editText做了一个LinearLayout: 停止EditText从活动启动获得焦点 因此它不会专注于应用程序的启动..
这是我的代码:
final EditText et = (EditText)findViewById(R.id.EditText01);
final InputMethodManager imm = (InputMethodManager) getSystemService(
INPUT_METHOD_SERVICE);
et.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT);
}
});
et.setOnFocusChangeListener(new View.OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasfocus) {
if(hasfocus) {
imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT);
} else {
imm.hideSoftInputFromWindow(et.getWindowToken(), 0);
}
}
});
Run Code Online (Sandbox Code Playgroud)
但是,当我点击editText之外的任何地方时,似乎没有调用onFocusChange!
在使用server.dll和client.exe的项目中,我dllexport从服务器dll编辑了一个服务器符号,而不是将其 dllimport编辑到客户端exe中.
仍然,应用程序链接,并启动,没有任何问题.是dllimport不需要的,那么???
细节:
我有这个'服务器'DLL:
// server.h
#ifdef SERVER_EXPORTS
#define SERVER_API __declspec(dllexport)
#else
#define SERVER_API // =====> not using dllimport!
#endif
class SERVER_API CServer {
static long s;
public:
CServer();
};
// server.cpp
CServer::CServer(){}
long CServer::s;
Run Code Online (Sandbox Code Playgroud)
这个客户端可执行文件
#include <server.h>
int main() {
CServer s;
}
Run Code Online (Sandbox Code Playgroud)
服务器命令行:
cl.exe /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL"
/D "SERVER_EXPORTS" /D "_UNICODE" /D "UNICODE" /D "_WINDLL"
/Gm /EHsc /RTC1 /MDd /Yu"stdafx.h"
/Fp"Debug\server.pch" /Fo"Debug\\" /Fd"Debug\vc80.pdb"
/W3 /nologo …Run Code Online (Sandbox Code Playgroud) 我试图更改文档内容类型.我必须使用工作流程,最好的方法是在sharepoint desingner中创建工作流程.我知道它是如何在视觉工作室中进行编程的
我尝试在一个只接受可选参数的类中设置一个新环境,或者没有.
这将使用这样:
\begin{myEnv} --> "Label:"
Run Code Online (Sandbox Code Playgroud)
要么
\begin{myEnv}[myLabel] --> "Label: myLabel"
Run Code Online (Sandbox Code Playgroud)
我尝试用基本宏定义这个环境.我宁愿不使用xparse包.
我找到了几个带有可选参数和强制参数的\newenvironment示例.但我不需要强制性的论点!
有没有办法用\newenvironment或\ def宏来做到这一点?
我有"2010-12-20T11:36:28 + 0000".如何将其解析为DateTime?
谢谢
我正在寻找一种有效的方法来从文本文件中读取数字而无需安装其他软件包.Data.ByteString.Lazy.Char8.readInt似乎是整数的诀窍.我已经读过ByteString现在有一个readDouble方法,但是当我编写import Data.ByteString.Lex.Lazy.Double (readDouble)编译器时抱怨:
Main.hs:4:7:
Could not find module `Data.ByteString.Lex.Lazy.Double':
locations searched:
Data/ByteString/Lex/Lazy/Double.hs
Data/ByteString/Lex/Lazy/Double.lhs
我的bytestring包版本是0.9.1.5.
那么,我做错了什么?或者可能有更好的解决方案?谢谢.
更新:好的,似乎readDouble是在默认情况下未安装的包bytestring-lexer中.还有其他想法吗?
我想在我的应用程序中集成facebook.我已经完成了登录代码并尝试在我的墙上发布,但我不需要facebook对话框.我想要自己的.谷歌搜索后,我发现了一些代码,但它不起作用.它没有给出任何错误但没有发布任何东西......
我在这里使用的是:
NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"Facebook developer Test Message",@"message",
@"Test it!",@"name",
nil];
Facebook *fb = [[Facebook alloc] init];
[fb requestWithGraphPath:@"me/feed" // or use page ID instead of 'me'
andParams:params
andHttpMethod:@"POST"
andDelegate:self];
Run Code Online (Sandbox Code Playgroud)
它无法正常工作..
FBStreamDialog *dialog = [[[FBStreamDialog alloc] init]
autorelease];
dialog.userMessagePrompt = @"Enter your message:";
dialog.attachment = [NSString
stringWithFormat:@"{\"name\":\"Facebook Connect for iPhone\",\"href\":\"http://developers.facebook.com/connect.phptab=iphone\",\"caption\":\"Caption\", \"description\":\"Description\",\"media\":[{\"type\":\"image\",\"src\":\"http://img40.yfrog.com/img40/5914/iphoneconnectbtn.jpg\",\"href\":\"http://developers.facebook.com/connect.php?tab=iphone/\"}],\"properties\":{\"another link\":{\"text\":\"Facebook home page\",\"href\":\"http://www.facebook.com\"}}}"];
[dialog show];
Run Code Online (Sandbox Code Playgroud)
这会打开一个对话框并要求我输入消息,当我点击它时,我会在墙上发布数据.
我已经反馈了以下链接
http://forum.developers.facebook.net/viewtopic.php?id=79466
请告诉我我在哪里做错了.
谢谢
是否可以使 TreeNodes(即文件夹)可由用户编辑?我看到 TreeNode 类中有一个名为 editable 的选项,但我无法让它工作或找到任何有关其用法的示例。
我的另一个任务是在节点中放置一个输入框,以便用户可以为每个项目输入数字。我该怎么做?
为什么在DEFAULT或ON UPDATE子句中只能有一个TIMESTAMP列和CURRENT_TIMESTAMP?
CREATE TABLE `foo` (
`ProductID` INT(10) UNSIGNED NOT NULL,
`AddedDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`UpdatedDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=INNODB;
Run Code Online (Sandbox Code Playgroud)
导致的错误:
错误代码:1293
表定义不正确; 在DEFAULT或ON UPDATE子句中只能有一个TIMESTAMP列和CURRENT_TIMESTAMP