我知道它必须处理启动线程以产生网络请求的丑陋,然后可能performSelectorOnMainThread:使用我的委托方法调用.
我知道如何在进行iOS编程时使用它,并且效果很好.但是,我想知道如何在(例如)命令行实用程序的上下文中使其工作,其中没有事件处理的UIApplication等.
我已经尝试过,似乎程序在异步调用返回后立即退出,然后才能调用委托方法.我非常希望更深入地了解它是如何工作的.
我正在尝试编写服务器,它将与任何可以建立套接字连接的标准客户端进行通信(例如telnet客户端)
它最初是一个echo服务器,当然不需要担心网络字节排序.
我熟悉ntohs,ntohl,htons,htonl函数.如果我传输的是16位或32位的整数,或者发送的字符串中的字符是2或4字节的倍数,那么它们本身就很棒.
我想创建一个对字符串进行操作的函数,例如:
str_ntoh(char* net_str, char* host_str, int len)
{
uint32_t* netp, hostp;
netp = (uint32_t*)&net_str;
for(i=0; i < len/4; i++){
hostp[i] = ntoh(netp[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
或类似的东西.上面的假设是单词大小为32位.我们不能确定发送机器上的字数不是16位还是64位正确?
对于客户端程序,例如telnet,它们必须在发送之前使用hton*,在接收数据后使用ntoh*,对吗?
编辑:对于那些人,因为1-char是一个字节,字节序无关紧要:
int main(void)
{
uint32_t a = 0x01020304;
char* c = (char*)&a;
printf("%x %x %x %x\n", c[0], c[1], c[2], c[3]);
}
Run Code Online (Sandbox Code Playgroud)
运行此代码段.我的输出如下:
$ ./a.out
4 3 2 1
Run Code Online (Sandbox Code Playgroud)
那些关于powerPC芯片组的人应该得到'1 2 3 4'但我们这些关于intel芯片组的人应该看看我上面得到的东西.
从前一个问题得到了这个想法.
无论如何,我的代码是这样的:
public class Slice<E>
{
private E[] data;
public Slice(Class<E> elementType, int size)
{
//@SuppresWarnings({"unchecked"})
data = (E[])Array.newInstance(elementType, size);
}
}
Run Code Online (Sandbox Code Playgroud)
我删除了不必要的东西.当抑制指令被注释掉时,这个编译很好.当我取消注释时,我得到了
Error: <identifier> expected
data = (E[])Array.newInstance(elementType, size);
^
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?为什么会发生这种情况?
我正在使用一个库,该库返回一个带有时间戳的结构,该时间戳由两个(TimestampHi,TimestampLo)unsigned longs表示.我几乎只需要打印出%lluprintf中的时间戳.
从这两个整数中获取数据并将其正确用作uint64_t的最简单方法是什么?
我有一组具有相同2列格式的csv文件.我想生成与每个文件对应的单独的xy散点图,但具有相同的样式.唯一应该改变的是输入和输出文件名.怎么做?
我正在编写一个程序的手册页,源代码如下:
.TH prog 1 "26 AUG 2010" "Version 0.1" "Center header"
.NAME
prog \- runs a program
.SH SYNOPSIS
.B prog
Run Code Online (Sandbox Code Playgroud)
我用的时候
$ groff -Tascii -man source.txt | more
Run Code Online (Sandbox Code Playgroud)
输出几乎与预期一致.
我用的时候:
$ groff -Tascii -man source.txt > prog.1 && \
sudo cp prog.1 /usr/local/man/man1/ && man prog
Run Code Online (Sandbox Code Playgroud)
输出看起来像这样:
prog(2)中心标题
prog(2)
NAME
prog - 运行程序
版本0.1 26 AUG 2010
我在Ubuntu 8.04上.我已经确认它不是寻呼机,因为我也试过man -P more并且仍然有相同的奇数输出.这是怎么回事?
c ×2
linux ×2
asynchronous ×1
cocoa ×1
distribution ×1
endianness ×1
generics ×1
gnuplot ×1
groff ×1
java ×1
objective-c ×1
portability ×1
shell ×1
string ×1
unix ×1