我正在学习用于Web开发的GWT,并遇到了一段我无法理解的代码.
helloBtn.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
Window.alert("Hello!");
}
});
Run Code Online (Sandbox Code Playgroud)
如果有人可以向我解释它的作用会很棒.
谢谢,约翰
我有一个结构数组,我想写入二进制文件.我有一个write.c程序和一个read.c程序.write.c程序似乎工作正常,但是当我运行read.c程序时,我遇到了分段错误.我是C的新手所以如果有人可以查看我的代码以查找任何明显的错误,那将会很棒.我保证不会太久:)
为write.c:
#include <stdlib.h>
#include <stdio.h>
struct Person
{
char f_name[256];
char l_name[256];
int age;
};
int main(int argc, char* argv[])
{
struct Person* people;
int people_count;
printf("How many people would you like to create: ");
scanf("%i", &people_count);
people = malloc(sizeof(struct Person) * people_count);
int n;
for (n = 0; n < people_count; n++)
{
printf("Person %i's First Name: ", n);
scanf("%s", people[n].f_name);
printf("Person %i's Last Name: ", n);
scanf("%s", people[n].l_name);
printf("Person %i's Age: ", n);
scanf("%i", &people[n].age);
}
FILE* …Run Code Online (Sandbox Code Playgroud) 可能重复:
C中的char s []和char*s有什么区别?
char*str ="..."和char str [N] ="......"之间的区别?
我有一些令我困惑的代码.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char* string1 = "this is a test";
char string2[] = "this is a test";
printf("%i, %i\n", sizeof(string1), sizeof(string2));
system("PAUSE");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当它输出string1的大小时,它打印4,这是预期的,因为指针的大小是4个字节.但是当它打印string2时,它输出15.我认为数组是一个指针,所以string2的大小应该与string1相同吗?那么为什么它为相同类型的数据(指针)打印出两种不同的大小呢?
我正在为一个用PHP编码的Web IM客户端后端的IPC系统工作.我正在尝试实现Unix套接字,但是在重用创建的套接字文件时遇到了麻烦.这是在套接字上侦听事件的代码.
<?php
$socket_file = "../tmp/sockets/test.sock";
$socket = socket_create(AF_UNIX, SOCK_STREAM, 0);
socket_bind($socket, $socket_file);
socket_listen($socket);
socket_select($temp = array($socket), $temp = null, $temp = null, 20);
$client = socket_accept($socket);
socket_set_nonblock($client);
$buffer = socket_read($client, 2048);
echo $buffer;
socket_close($client);
socket_close($socket);
Run Code Online (Sandbox Code Playgroud)
当第一次运行此脚本时,它会创建套接字文件test.sock并等待连接.然后当我运行发送脚本时:
<?php
$socket = socket_create(AF_UNIX, SOCK_STREAM, 0);
socket_connect($socket, "../tmp/sockets/test.sock");
$msg = "\nThis is a test\r\n";
socket_write($socket, $msg, strlen($msg));
socket_close($socket);
Run Code Online (Sandbox Code Playgroud)
另一个脚本将输出收到的消息并退出.所以到目前为止所做的一切都按照我的预期进行.问题是,当我尝试重新执行监听脚本时,它会抛出此错误:
Warning: socket_bind() [function.socket-bind]: unable to bind address [98]: Address already in use
Run Code Online (Sandbox Code Playgroud)
如果我跑
rm ~/tmp/sockets/test.sock
Run Code Online (Sandbox Code Playgroud)
然后重新运行listen脚本,它重新创建套接字文件并正常工作.所以我的问题是:无论如何,监听脚本重新连接到现有的套接字文件,并且发送脚本是否可以写入套接字,即使另一个脚本没有连接并监听该套接字文件?我是unix套接字概念的新手,所以任何帮助都将不胜感激!