12/11/2007

世俱杯决赛-期待ing

刚才上fifa.com看了一下世俱杯决赛的情况,一个好消息,一个坏消息:
好消息是比赛场地就在新横滨,不是横滨市区,打开地图更是发现就在公司后面走路不过10min的地方,上次散步还看到那个体育场,hoho...
坏消息是票卖完了,呜呜,难道我真的要在体育场外听2个小时?保佑我能买到黄牛票吧!!!

11/27/2007

无题

对最近发生的几件事情发点牢骚:
1. 上周四在amazon.cn定购了一本书,送货方式选择快递的,心想周末之前总能收到吧,所以就填了个家庭住址。没想到状态显示周一才能到,于是打电话给 送货商要求改地址,第一次打过去说管物流的人下午才上班,可是下午之后再打电话一直没人接了...周一再打,通了,告知货已在路上,地址不能改,叫我找 amazon改...想不同,他们宁愿白跑一趟也不愿从我这里知道正确的地址!随他吧,我只好找amazon改,声音甜蜜的amazon小姐很快记下了正 确的地址,说会通知送货商的。
今天,送货商打电话问我怎么家里没人?送了2次都没人接收,hoho,这不正是你们自己造成的吗?早告诉你不听,白跑两趟真活该!对我来说,反正是货到付款的,只是晚几天拿到而已。
2. 公司又发mail通知不能安装未授权的软件了,估计除了notebook自带的windows和一个杀毒软件,没有其他的可以用了。而且上次已经统计过工 作需要的软件工具,包括VMware,Source insight等,公司一个没买,这次又跳出来喊,显得很支持正版似的,其实正应了一句古话:既要做婊子,又要立牌坊!
3. 是一件小事,有天我想打电话给浦发信用卡中心,到它网站上找了很长时间才找到电话号码,真不知道他们有没有把方便客户放在心上,“用心服务“这个口号用的不少,可是又有多少企业能做到呢?

11/17/2007

变长参数

#include 《stdarg.h》

void LOG(const char* fmt, ...)
{
va_list ap;
/*initializes the argument pointer variable */
va_start(ap, fmt);
vprintf(fmt, ap);
/*ends the use of ap*/
va_end(ap);
}

main()
{
LOG("%s:%d\n", __func__, __LINE__);
}

最简单的socket server/client(echoserver)

CLIENT:
1. 调用socket函数create一个(int)socket:
clientsock=socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)
2. 初始化一个(struct sockaddr_in)echoserver:
memset(&echoserver, 0, sizeof(echoserver));
echoserver.sin_family = AF_INET;
echoserver.sin_port = htons(atoi(argv[3])); //Server Port
echoserver.sin_addr.s_addr = inet_addr(argv[1]); //Server IP
3. 调用connet向server发起连接请求:
connect(clientsock,&echoserver,sizeof(echoserver);
4. 调用send向已经与server连接的socket发数据
send(clientsock, argv[2], echolenth, 0)
5. 或调用recv从已经与server连接的socket接收数据
recv(clientsock,buffer,BUFFER_SIZE-1,0)
6. 用完关闭socket
close(clientsock)

SERVER:
1. create (int)socket-serversock(for bind/listen/accept), define clientsock(for recv):
serversock=socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)
2. 初始化(struct sockaddr_in)echoserver(for bind),定义echoclient(for accept):
memset(&echoserver, 0, sizeof(echoserver)); /* Clear struct */
echoserver.sin_family = AF_INET; /* Internet/IP */
echoserver.sin_addr.s_addr = htonl(INADDR_ANY); /* Incoming addr */
echoserver.sin_port = htons(atoi(argv[1])); /* server port */
3. 调用bind绑定echoserver:
bind(serversock, &echoserver, sizeof(echoserver));
4. 监听端口
listen(serversock, MAXPENDING) /*可设置最大连接数*/
5. while循环里等待连接请求
/*得到(int)clientsock,(struct sockaddr_in)echoclient的信息*/
(int)clientsock = accept(serversock, &echoclient, &length/*sizeof(echoclient)*/)
6. 处理接收到的clientsock
6.1 从clientsock中接收数据:
recv(clientsock,buffer,BUFFSIZE,0)
6.2 往clientsock中发送数据:
send(clientsock, buffer, received, 0)
6.3 关闭clientsock:
close(clientsock);

参考:
http://www.ibm.com/developerworks/cn/views/linux/tutorials.jsp?cv_doc_id=85074