爱因斯坦在63岁时说过“一个人没有在30岁以前达成科学上的最大成就,那他永远都不会有。”

我的最新日志

  • 我的blog搬家了

    2007-11-09

    我有自己的空间了,在那开了自己的blog,欢迎各位光临。我的blog地址是http://blog.missmyfriends.cn

    继续讨论我们的技术!

  • 努力努力,加油加油!

    2007-9-23

    生活的质量是自己来决定的,将来需要过什么样的生活,得看自己的努力!要加油哦!

  • 定心了,回来了

    2007-4-11

    犹犹豫豫,反反复复,现在终于定下心来,一切开始了。2007年,全世界都要围绕我来转,加油啊,Baby!

  • 该选择得不是工作,而是城市!!!!!!!!

    2007-1-12

    这次面试得体会,我今天才明白这个道理——该选择得不是工作,而是城市。

    前天去了一趟南京,为了一份工作去面试得。和主任聊得也可以,但是我就是不明白,心中也没有底,他到底要不要我在他们单位工作。他说,先把东西留下,以后再联系,有什么东西需要做得话,可以网上发给我,暂时我可以不需要过去,省得我学校单位两边跑,要是工作得话,也得等到明年,现在我们也快放假了,有很多人都想在大学最后得一个寒假好好得玩一下。明年春天,各大招聘会也会相继举办,如果到时候我真得想在南京发展,就应该先找个地方住下,再找工作。我想不明白,觉得其实找房子什么得,这些都是很简单得事情,只要大家彼此满意(我满意你提高得工作,你满意我得能力),其他一切都好说得。

    今天在群里,有一个网友在发招聘信息,另一个网友咨询。在说得话中,我终于明白了,前天那个主任说得话。

    招人的心里:

    从一个城市到另外一个城市,下决心是自己本身想去一个城市工作,一个工作不行再换,但因为一个工作换个城市,我觉得有点太看重这个工作了。从一个城市辞职到另外一个城市,仅仅因为一个工作,这个工作需要有非常大的吸引力 。工作就只是一份普通的工作,不可能承担你换城市的成本或者说承担吸引你换城市的吸引力 ,我只给你工作你这个水平的待遇,而且不是能吸引你换城市的待遇

    被招的心里:

    假如你的公司给不了在外地中型城市收入水平的薪水,我想,没有人会去 。我换城市觉得很简单,不是什么条件,又没想一直在哪个城市呆下去。。。我还年轻,还没玩够呢,嘿嘿


    招人和被招得之间得想法太不一样了,从今天群里得聊天,我终于明白了两者之间得想法,这个就是现实得存在。一个看重的是先决条件,一个是认为先决条件不是问题,直接问待遇,以此次机会为契机,侧重点不一样!

    我想,我现在也该该好好考虑了,我喜欢的是什么样的城市,决定找什么样的工作!需要深深的考虑好!

  • 茫然

    2007-1-06

    终于明白,为什么需要在毕业前有实习这块。今天我才发现,原来自己也慌的时候。一向说话自如,面对突如其来的面试通知,我发现自己失去了方向。

    是对自己不够信心吗?

    快要毕业了,得找实习单位,于是在网上投递了些简历。今天受到email通知我面试,同时公司单位的一个发qq告诉我,面对突如其来的(因为了还没3天,没想到这么快就有了回应)通知,我有点不知所措。当时看到公司有招实习的,况且也是做计算机方面的,就投了。现在好好的回头看了下公司的招聘要求,原来招聘要求是

    1.计算机专业毕业
    2精通JAVA或.net平台,熟悉J2EE; 
    3.能够使用Jsp/Servlet、JavaBean、HTML、XML、Javascrīpt进行B/S系统的开发 
    4.能够使用关系型数据库,有使用SQLServer,Oracle,DB2之一的实际经验
    5.具备良好的沟通能力和团队协作精神。 
    6.有良好的软件工程知识和质量意识。 
    7.良好的沟通技能,团队合作能力。

    我根本就不懂java,.net也只是最近才看了些书,我懂的是PHP。我慌了。这个实习机会是否该争取。是否再从头开始接触这些,我不怕从头开始,但是我不知道实习单位是否肯给这个机会。

    唉,今天有点不象我了!我得好好考虑一下,该怎么解决这个问题。

  • 简简单单

    2007-1-04

    毕业设计的题目是《计算机应用基础资源网站》,名字这么长,实质就是一个资源网。由于小组的其他两个人对静态是一点都不咋样,老师让我来设计静态页面。资源网主要体现的是资源多,页面的图片没有必要多,简简单单的,框框就是了,这样速度又快,主色调是蓝色的,排版的满紧凑的,体现一下资源的丰富,呵呵!给老师看了一下,还算满意。

     

  • 周凯旋:15分钟赚4亿 没有性别的香港女人

    2006-12-31

    作者为3G门户网总裁 张向东
      
      TOM与EBAY的这场交易终于发生,无从揣测到底是谁在谈判桌上起了决定作用,但这次,各大网站终于有了周凯旋的照片。

      几年前,作为记者的我专访了周凯旋,这样的采访对象,对记者来说充满了吸引力:有着传奇故事但是没被完整书写过,形象非常好但曝光率极低……那次采访,我猜也是她谈个人谈的最多的一次,虽然我写得有点不像访问。

      几年后的今天,我被邓裕强号召,做了3G门户(手机登陆3G.cn),算是重回互联网行业,这个领域有无数的须眉好汉和巾帼英雄,但周凯旋在我见过的人中,仍然是最具光彩的一个。

      翻找出自己写的文章,似乎让它可以成为这件大事的一个注脚。

      导语:操纵着中国最有影响力的公司之一,创造了诸多商业神话,她说自己只会做本分工作;多年致力与中国最有财富和权势的人之间,她说自己最不喜与人交往。

      周凯旋是谁?

      周凯旋是一个男性化的名字,所有者却是一位仪态万方的女人;周凯旋的后缀,最常被加上的是充满敬畏的“小姐”或“老板”;周凯旋的前缀,在香港媒体上经常是“李嘉诚的红颜知己、亲信助手”,在大陆媒体上经常是“TOM集团幕后的掌控者”,但无论是哪家媒体,任何场合,周凯旋都是永远的职业套装、扇形耳饰;周凯旋是太多人目睹其事,身受其影响,却有意鲜闻其名的女人:雍容华贵的穿着,亲切得体的举止,美丽成熟的面孔,当然,还有众人仰慕的身份——李嘉诚基金会的董事、中华关怀集团的拥有者、香港创业板上最大的公司——TOM.COM(8001.HK)的第二大股东,以及另外数目不详的公司或资产所有者。
     
      用一件大事作开头

      在北京长安街上,地处中国最黄金地段的东方君悦大酒店,本已约好的采访即将开始。周凯旋轻松地解去沙巾,建议记者们采访她邀请来讲演的老科学家,“他获得诺贝尔物理学奖,80岁高龄,非常风趣的。”门口,是TOM互联网事业部副总裁、身手矫健的德籍女保镖等一干人,他们专心等候,凝神屏气。

      身处此地,周凯旋放松自在,如同主人。

      周凯旋也确是这里的主人。1993年,就是这位女子,就是这位毫无地产操作经验的女子,提出了全面开发新东方广场规划,并用半年时间,迁走了长安街上20余个国家部级单位、40余个市级单位、100余个区级单位、1800余户居民;又如传说一样,在某个早晨,用15分钟时间,说服李嘉诚先生为此项目投下20亿美金,轻取4亿港币的酬劳。

      历史总是留下结果和线索,丢失了细节,其实是最重要的细节。

      那几年,处于最敏感地段的东方广场,作为华人首富李嘉诚投资的亚洲最大的建筑群项目,历经陈希同、王宝森贪污受贿案,长江实业运作北京高层突破建筑高度限制,麦当劳王府井店搬迁,开发中撞见古迹等一系列风浪,工程过程起伏变幻,事内事外的猜测,国内国际的言论绵延不绝,没有人真正知道周凯旋到底是如何周旋其中,一一摆平的。

      在周凯旋对东方广场项目为数不多的描述中,她说是“两个女生,从一幢小楼起步,做成一件轰动的大事。”那时她和张培薇为董建华下属的东方海外公司寻找地产投资项目,完全靠直觉在长安街上找到儿童电影院,却发现按照政府规划,必须要下周围1万平方米的面积整体开发,出乎意料的周凯旋也施出出乎意料的一招:全面吃下王府井至东单“金街”与“银街”之间的10万平方米的地段,然后转给李嘉诚先生投资。

      这件“轰动的大事”成为周凯旋另外一种生活的开始,此后,她的生活中最主要的元素就都成了“大事”。

      香港IT投资热潮,TOM创下的投资神话中,周凯旋是一直是李嘉诚先生最重要的参谋伙伴,以致于香港《壹周刊》曾大做头条:富豪知己力斗太子。TOM的跨媒体收购战车,一路从专业网站到户外广告,从报纸、杂志到电视,直到今天尚未见稍有停止的收购步伐中,周凯旋偶露身影,都是在最重要的决策关头。被周凯旋选中,参与早期Tom.com(即TOM集团互联网事业部)工作的娱乐明星朱时茂至今还记得4年前的“周老板”:思路清晰,聪明过人。

      或许,这世界上数以十亿计的民众生活,其实是极少数人决定的结果,这就是资本世界公开的秘密。

      从东方广场之后,周凯旋就和这些极少数人站在了一起。他们的手指向什么行业,什么行业就蓬勃兴盛;指向什么地方,什么地方就变成金矿。借资本之力,他们决定地球的转速,也用改变世界的方式成就了自己的生活,周凯旋们几乎生活在另外一个高高在上的世界。

      在广州、青岛、昆明、郑州等等城市大街上等车的年轻人,不一定知道身边的路牌广告是周凯旋收购到TOM集团的;163.net电子信箱每天收发着数以百万计的e-mail,用户不一定知道这家公司是周凯旋委派王兟收购的;羊城报业、三联书店、华娱电视、雷霆无极游戏……这些实体每天每夜都在相当程度上流转着周凯旋的钱,而她最近喜欢投资的则是古董。就连最刁钻的记者都问不出她到底投资了多少家公司,“我也经常会拿我信得过的人的名义去做些其他的事。”周凯旋说。仅仅她在TOM集团股份的市值,就曾经超过上百亿港元。
     
      没有性别的香港女人
     
      采访当日,是周凯旋基金会一项鼓励青少年发明创造的颁奖大会。周凯旋基金会主要资助的对象为大陆贫困地区的教育对象,其中包括“明日女大学生”、“明日女教师”等在内的多个奖项特别为女孩子设立。

      以自己的名字命名这个慈善基金会,并不像周凯旋的惯常作风。面对这个话题,周凯旋忽然显得有些黯然却又不失决绝,“这个问题我其实思考过很长时间,但我想过,如果连我自己都不敢拿出勇气来,她们怎么接受我的帮助?她们怎么在以后有勇气去面对别人的目光。”

      事实上,周凯旋一直所刻意展示出来的,是一个中性的商业人物,以周凯旋本人的名义为女性号召,周凯旋基金会堪称是她唯一的特例。

      然而,性别特征在周凯旋的生命历程中的特殊含义是谁也无法抹掉的。当她穿着束腰外衣和蓝色短袜上学的时候,路人看到的是香港拔萃女书院的小学生;当她在澳大利亚新南威尔士大学的时候,同学们看到的是豆蔻年华的女留学生;当她在上世纪90年代,一周一次,往返于北京-香港的时候,北京的生意人看到的是香港来的女打工仔。

      周凯旋到现在还在忿忿不平,“那时候我也是为董先生这样的大公司做事情啊,但他们就是觉得那时候来北京的香港人,是在香港混不下去才来大陆的‘矮仔’——你知道吗?香港骂人的话:矮仔——他们就是觉得我低人一等!”

      “矮仔”是北京留给周凯旋最大的伤痛,商业文明早就相当发达的香港,女性身份也是劣势。一个小小的例子就是香港著名的商界政界女性,十有八九都是在原姓名上冠以夫姓的四字姓名,而从未公开婚姻状况、三个字姓名的周凯旋在其中显得尤为醒目。

      周凯旋特别不喜欢接受香港时尚传媒的访问,因为“香港记者现在越来越只关心我穿什么牌子的衣服了”。每一个场合她都用职业套装淡化着自己的女性身份,每一句言论都没有女性的强调,周凯旋是在要自己言谈举止的每一个信号告诉别人:忘记自己的性别。

      万众瞩目是商业成功人士难逃的巢臼,周凯旋清楚地明白这一点,她说:“有什么办法呢?这就是我选择的人生道路的代价。”
     
      乐与自己相处

      有人说,一个人的能量决定于在经常在他周围的是什么人。或者周凯旋的经历可以作为这一理论的一个佐证。

      进入董建华的公司,机缘是周凯旋曾经和董建华先生的表妹张培薇共事;为董建华服务,才有了东方广场项目;东方广场项目成功之后,周凯旋即成为李嘉诚投资的TOM集团的第二大股东;周凯旋亲手提拔的TOM集团互联网事业部少帅王雷雷,祖父曾任电子工业部部长,王雷雷的母亲,是周凯旋在东方广场项目前就认识的好友。

      周凯旋对此并不讳言,自认多年以来,致力于董建华和李嘉诚之间,但是“我不是他们的附属物,而是一个完全独立的个体”,周凯旋的关系哲学是“不把关系做成包袱”,这样的关系才能自然、强壮。

      没有几个人可见证周凯旋与华人首富、香港特首的密切交往,但是任何与周凯旋简单接触的人,都能在几秒种内感受到她有如磁铁般的引力:当你对她说话的时候,她的眼神能让你相信全世界都在倾听你的声音;她说话清楚明确,语调丰富,时刻注意对方的感受,即使在多人面前谈话,她也会适时望你一眼,让你感觉到从来没有被忽视;她在每个故事里提到这样或那样的人,包括经常乘坐的航班乘务人员,为她制作过首饰的师傅,都会加上一个几乎成了固定的称谓——“我很好的朋友”。

      采访前,周凯旋在“明天小科学家”会后合影,椅子刚好缺了一把,于是,推来让去之后,坐在第一排最中间的她,借了两边人的光,就那么挤在两把椅子中间照了相。要是以周凯旋的举止写一本关于人际交往的书,一定会是公共关系的圭臬——这个假设,凡是见过周凯旋的人都会认为成立。

      但是,拥有如此多“很好的朋友”的周凯旋强调说自己不喜与人交往。

      她说自己每天都会争取在晚上六点前回家,早上六点起床的习惯数十年未变。她兴趣广泛,每天写作,但是“都不用自己的真名”。身边总是有书,从漫画到心理学理论,她都喜欢。

      “最乐于与自己相处。”周凯旋强调说这和“独处”不同。或者可以这样猜想区别:“独处”多是苦修,“与自己相处”则多了份自由的享受。

      这个“乐于与自己相处”的女子每天都这样神情自若地走出门去,和无数人物熟恁地打着家常,打理应付着各种事务,而她另外一面的生活掩藏地严严实实,没有人知道她的婚姻,甚至年龄,她要保留的,似乎没有人能抢走。

      出现在照片中的周凯旋,永远戴着自己珍爱的贝壳耳饰,那是她最早在香港上班时用一个月的薪水买下的心爱之物,当时的她天天从那个柜台经过,每看一次她就下一次决心。等到“全世界都是她的糖果店任由她挑选”(朋友评价周凯旋语)时,她一次请师傅一模一样制作了10副,轮换在周一至周五佩戴,而周六日,她只会在右耳戴上一只挂型耳坠,虽然没有人看见那样的周凯旋会是什么样,但可以想见,一定是完全不同的风采

  • PHP和Socket

    2006-12-29

    文章:   PHP And Socket
    书名: 《PHP Game Programming》
    作者:   Matt Rutledget
    翻译:   heiyeluren <heiyeluren_gmail_com>

    ◇ Socket基础
    ◇ 产生一个服务器
    ◇  产生一个客户端

    在这一章里你将了解到迷人而又让人容易糊涂的套接字(Sockets)。Sockets在PHP中是没有充分利用的功能。今天你将看到产生一个能使用客户端连接的服务器,并在客户端使用socket进行连接,服务器端将详细的处理信息发送给客户端。
    当你看到完整的socket过程,那么你将会在以后的程序开发中使用它。这个服务器是一个能让你连接的HTTP服务器,客户端是一个Web浏览器,这是一个单一的 客户端/服务器 的关系。

    ◆ Socket 基础


    PHP使用Berkley的socket库来创建它的连接。你可以知道socket只不过是一个数据结构。你使用这个socket数据结构去开始一个客户端和服务器之间的会话。这个服务器是一直在监听准备产生一个新的会话。当一个客户端连接服务器,它就打开服务器正在进行监听的一个端口进行会话。这时,服务器端接受客户端的连接请求,那么就进行一次循环。现在这个客户端就能够发送信息到服务器,服务器也能发送信息给客户端。
    产生一个Socket,你需要三个变量:一个协议、一个socket类型和一个公共协议类型。产生一个socket有三种协议供选择,继续看下面的内容来获取详细的协议内容。
    定义一个公共的协议类型是进行连接一个必不可少的元素。下面的表我们看看有那些公共的协议类型。

    表一:协议
    名字/常量     描述
    AF_INET  这是大多数用来产生socket的协议,使用TCP或UDP来传输,用在IPv4的地址
    AF_INET6     与上面类似,不过是来用在IPv6的地址
    AF_UNIX  本地协议,使用在Unix和Linux系统上,它很少使用,一般都是当客户端和服务器在同一台及其上的时候使用
    表二:Socket类型
    名字/常量     描述
    SOCK_STREAM  这个协议是按照顺序的、可靠的、数据完整的基于字节流的连接。这是一个使用最多的socket类型,这个socket是使用TCP来进行传输。
    SOCK_DGRAM  这个协议是无连接的、固定长度的传输调用。该协议是不可靠的,使用UDP来进行它的连接。
    SOCK_SEQPACKET  这个协议是双线路的、可靠的连接,发送固定长度的数据包进行传输。必须把这个包完整的接受才能进行读取。
    SOCK_RAW  这个socket类型提供单一的网络访问,这个socket类型使用ICMP公共协议。(ping、traceroute使用该协议)
    SOCK_RDM  这个类型是很少使用的,在大部分的操作系统上没有实现,它是提供给数据链路层使用,不保证数据包的顺序

    表三:公共协议
    名字/常量     描述
    ICMP  互联网控制消息协议,主要使用在网关和主机上,用来检查网络状况和报告错误信息
    UDP      用户数据报文协议,它是一个无连接,不可靠的传输协议
    TCP 传输控制协议,这是一个使用最多的可靠的公共协议,它能保证数据包能够到达接受者那儿,如果在传输过程中发生错误,那么它将重新发送出错数据包。

    现在你知道了产生一个socket的三个元素,那么我们就在php中使用socket_create()函数来产生一个socket。这个socket_create()函数需要三个参数:一个协议、一个socket类型、一个公共协议。socket_create()函数运行成功返回一个包含socket的资源类型,如果没有成功则返回false。
    Resourece socket_create(int protocol, int socketType, int commonProtocol);

    现在你产生一个socket,然后呢?php提供了几个操纵socket的函数。你能够绑定socket到一个IP,监听一个socket的通信,接受一个socket;现在我们来看一个例子,了解函数是如何产生、接受和监听一个socket。

    <?php
    $commonProtocol = getprotobyname(“tcp”);
    $socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);
    socket_bind($socket, ‘localhost’, 1337);
    socket_listen($socket);
    // More socket functionality to come
    ?>

    上面这个例子产生一个你自己的服务器端。例子第一行,
    $commonProtocol = getprotobyname(“tcp”);
    使用公共协议名字来获取一个协议类型。在这里使用的是TCP公共协议,如果你想使用UDP或者ICMP协议,那么你应该把getprotobyname()函数的参数改为“udp”或“icmp”。还有一个可选的办法是不使用getprotobyname()函数而是指定SOL_TCP或SOL_UDP在socket_create()函数中。
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    例子的第二行是产生一个socket并且返回一个socket资源的实例。在你有了一个socket资源的实例以后,你就必须把socket绑定到一个IP地址和某一个端口上。
    socket_bind($socket, ‘localhost’, 1337);
    在这里你绑定socket到本地计算机(127.0.0.1)和绑定socket到你的1337端口。然后你就需要监听所有进来的socket连接。
    socket_listen($socket);
    在第四行以后,你就需要了解所有的socket函数和他们的使用。

    表四:Socket函数
    函数名      描述
    socket_accept()    接受一个Socket连接
    socket_bind()     把socket绑定在一个IP地址和端口上
    socket_clear_error()   清除socket的错误或者最后的错误代码
    socket_close()     关闭一个socket资源
    socket_connect()    开始一个socket连接
    socket_create_listen()   在指定端口打开一个socket监听
    socket_create_pair()   产生一对没有区别的socket到一个数组里
    socket_create()    产生一个socket,相当于产生一个socket的数据结构
    socket_get_option()    获取socket选项
    socket_getpeername()   获取远程类似主机的ip地址
    socket_getsockname()   获取本地socket的ip地址
    socket_iovec_add()    添加一个新的向量到一个分散/聚合的数组
    socket_iovec_alloc()   这个函数创建一个能够发送接收读写的iovec数据结构
    socket_iovec_delete()   删除一个已经分配的iovec
    socket_iovec_fetch()   返回指定的iovec资源的数据
    socket_iovec_free()    释放一个iovec资源
    socket_iovec_set()    设置iovec的数据新值
    socket_last_error()    获取当前socket的最后错误代码
    socket_listen()     监听由指定socket的所有连接
    socket_read()     读取指定长度的数据
    socket_readv()     读取从分散/聚合数组过来的数据
    socket_recv()     从socket里结束数据到缓存
    socket_recvfrom()    接受数据从指定的socket,如果没有指定则默认当前socket
    socket_recvmsg()    从iovec里接受消息
    socket_select()     多路选择
    socket_send()     这个函数发送数据到已连接的socket
    socket_sendmsg()    发送消息到socket
    socket_sendto()    发送消息到指定地址的socket
    socket_set_block()    在socket里设置为块模式
    socket_set_nonblock()   socket里设置为非块模式
    socket_set_option()    设置socket选项
    socket_shutdown()    这个函数允许你关闭读、写、或者指定的socket
    socket_strerror()    返回指定错误号的详细错误
    socket_write()     写数据到socket缓存
    socket_writev()    写数据到分散/聚合数组

    (注: 函数介绍删减了部分原文内容,函数详细使用建议参考英文原文,或者参考PHP手册)
     

    以上所有的函数都是PHP中关于socket的,使用这些函数,你必须把你的socket打开,如果你没有打开,请编辑你的php.ini文件,去掉下面这行前面的注释:
    extension=php_sockets.dll
    如果你无法去掉注释,那么请使用下面的代码来加载扩展库:
    <?php
    if(!extension_loaded(‘sockets’))
    {
    if(strtoupper(substr(PHP_OS, 3)) == “WIN”)
    {
    dl(‘php_sockets.dll’);
    }
    else
    {
    dl(‘sockets.so’);
    }
    }
    ?>

    如果你不知道你的socket是否打开,那么你可以使用phpinfo()函数来确定socket是否打开。你通过查看phpinfo信息了解socket是否打开。如下图:
     
    查看phpinfo()关于socket的信息


    ◆ 产生一个服务器


    现在我们把第一个例子进行完善。你需要监听一个指定的socket并且处理用户的连接。

    <?php
    $commonProtocol = getprotobyname("tcp");
    $socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);
    socket_bind($socket, 'localhost', 1337);
    socket_listen($socket);
    // Accept any incoming connections to the server
    $connection = socket_accept($socket);
    if($connection)
    {
     socket_write($connection, "You have connected to the socket...\n\r");
    }
    ?>

    你应该使用你的命令提示符来运行这个例子。理由是因为这里将产生一个服务器,而不是一个Web页面。如果你尝试使用Web浏览器来运行这个脚本,那么很有可能它会超过30秒的限时。你可以使用下面的代码来设置一个无限的运行时间,但是还是建议使用命令提示符来运行。
    set_time_limit(0);
    在你的命令提示符中对这个脚本进行简单测试:
    Php.exe example01_server.php
    如果你没有在系统的环境变量中设置php解释器的路径,那么你将需要给php.exe指定详细的路径。当你运行这个服务器端的时候,你能够通过远程登陆(telnet)的方式连接到端口1337来测试这个服务器。如下图:

     

    上面的服务器端有三个问题:1. 它不能接受多个连接。2. 它只完成唯一的一个命令。3. 你不能通过Web浏览器连接这个服务器。
    这个第一个问题比较容易解决,你可以使用一个应用程序去每次都连接到服务器。但是后面的问题是你需要使用一个Web页面去连接这个服务器,这个比较困难。你可以让你的服务器接受连接,然后些数据到客户端(如果它一定要写的话),关闭连接并且等待下一个连接。
    在上一个代码的基础上再改进,产生下面的代码来做你的新服务器端:

    <?php
    // Set up our socket
    $commonProtocol = getprotobyname("tcp");
    $socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);
    socket_bind($socket, 'localhost', 1337);
    socket_listen($socket);
    // Initialize the buffer
    $buffer = "NO DATA";
    while(true)
    {
     // Accept any connections coming in on this socket

     $connection = socket_accept($socket);
     printf("Socket connected\r\n");
     // Check to see if there is anything in the buffer
     if($buffer != "")
     {
      printf("Something is in the buffer...sending data...\r\n");
      socket_write($connection, $buffer . "\r\n");
      printf("Wrote to socket\r\n");
     }
     else
     {
      printf("No Data in the buffer\r\n");
     }
     // Get the input
     while($data = socket_read($connection, 1024, PHP_NORMAL_READ))
     {
      $buffer = $data;
      socket_write($connection, "Information Received\r\n");
      printf("Buffer: " . $buffer . "\r\n");
     }
     socket_close($connection);
     printf("Closed the socket\r\n\r\n");
    }
    ?>

    这个服务器端要做什么呢?它初始化一个socket并且打开一个缓存收发数据。它等待连接,一旦产生一个连接,它将打印“Socket connected”在服务器端的屏幕上。这个服务器检查缓冲区,如果缓冲区里有数据,它将把数据发送到连接过来的计算机。然后它发送这个数据的接受信息,一旦它接受了信息,就把信息保存到数据里,并且让连接的计算机知道这些信息,最后关闭连接。当连接关闭后,服务器又开始处理下一次连接。(翻译的烂,附上原文)
    This is what the server does. It initializes the socket and the buffer that you use to receive
    and send data. Then it waits for a connection. Once a connection is created it prints
    “Socket connected” to the screen the server is running on. The server then checks to see if
    there is anything in the buffer; if there is, it sends the data to the connected computer.
    After it sends the data it waits to receive information. Once it receives information it stores
    it in the data, lets the connected computer know that it has received the information, and
    then closes the connection. After the connection is closed, the server starts the whole
    process again.


    ◆ 产生一个客户端

    处理第二个问题是很容易的。你需要产生一个php页连接一个socket,发送一些数据进它的缓存并处理它。然后你又个处理后的数据在还顿,你能够发送你的数据到服务器。在另外一台客户端连接,它将处理那些数据。
    To solve the second problem is very easy. You need to create a PHP page that connects to
    a socket, receive any data that is in the buffer, and process it. After you have processed the
    data in the buffer you can send your data to the server. When another client connects, it
    will process the data you sent and the client will send more data back to the server.


    下面的例子示范了使用socket:

    <?php
    // Create the socket and connect
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    $connection = socket_connect($socket,’localhost’, 1337);
    while($buffer = socket_read($socket, 1024, PHP_NORMAL_READ))
    {
     if($buffer == “NO DATA”)
     {
     echo(“<p>NO DATA</p>”);
     break;
     }
     else
     {
      // Do something with the data in the buffer
      echo(“<p>Buffer Data: “ . $buffer . “</p>”);
     }
    }
    echo(“<p>Writing to Socket</p>”);
    // Write some test data to our socket
    if(!socket_write($socket, “SOME DATA\r\n”))
    {
     echo(“<p>Write failed</p>”);
    }
    // Read any response from the socket
    while($buffer = socket_read($socket, 1024, PHP_NORMAL_READ))
    {
     echo(“<p>Data sent was: SOME DATA<br> Response was:” . $buffer . “</p>”);
    }
    echo(“<p>Done Reading from Socket</p>”);
    ?>

    这个例子的代码演示了客户端连接到服务器。客户端读取数据。如果这是第一时间到达这个循环的首次连接,这个服务器将发送“NO DATA”返回给客户端。如果情况发生了,这个客户端在连接之上。客户端发送它的数据到服务器,数据发送给服务器,客户端等待响应。一旦接受到响应,那么它将把响应写到屏幕上。


    结合Socket的坦克大战

    (因为是描述游戏和socket结合,跟本文联系不大,所以不翻译,建议参考英文原文)

    [ 题外话 ]

    翻译文章的初衷是因为我个人对socket非常感兴趣,而且目前国内见php的文章比较少,除了php手册里面的部分内容,所以在我看了《PHP Game Programming》这本书里有关于socket的内容后毅然决定要翻译,我知道翻译出来的质量不行,还请见谅。

    另外,我在《Core PHP Programming》Third Edition中也发现里面的Socket内容讲的不错,如果有空,我想也许我会把它也给翻译一下。这是我第一次翻译文章,花了我近五个小时,文章可以说是错误百出,如果翻译的不合理请见谅,如果有兴趣提高这个内容可以给我发邮件。这个凌晨时分,竟然无法入眠,不知道是不是在其他角落,也有人同我一样。

    希望本文能够给向学习PHP Socket编程的朋友一点帮助,感谢你阅读这个错误百出的文章。


    翻译:heiyeluren <heiyeluren_at_gmail.com>
    时间:2005-8-14 04:46

    ps: 本来在word来排版挺好看的文章,到了blog里这么难看,凑合吧。

    如果转载本文,请注明来源,毕竟我熬夜翻译容易吗我! -_-#

     原文地址 http://blog.csdn.net/heiyeshuwu/archive/2005/08/16/456000.aspx

  • 感谢带我走进PHP的朋友

    2006-12-27

    我学PHP的第一本书是《PHP4开发指南》,这是我们的小汤老师推荐的,当初他也是通过这本书进入PHP的世界,不过那时候,他完全是自学的,现在,我们是他带着的。这本书我好好看了几遍,对于初学者,确实挺合适的。虽说是小汤老师带我进入这个世界,但是我觉得我跟在他后面并没有学到什么,我不否认是他带我进PHP的,我很感激他让我知道了PHP。俗话说,师傅领进门,修行在个人,或许这就是他教学的宗旨。

    我要非常感谢的是vivian,是他让我知道了class,mvc,smarty,pear....一路上,是他指引着我,开阔我的眼界,让我少走了很多的弯路。感谢他在我学习php的路上给予太多的帮助。

    感谢那些帮助我的朋友,是你们,在我一筹莫展的时候点化了我,让我有了信心,让我更加的喜欢PHP,我会尽自己的力量,帮助我能帮助的人,让更多的人加入到这个行列中来,大家一起来!

  • 呵呵,很高兴在这里建了个家

    2006-12-22

    ,呵呵,来phpchina,有些日子了,很高兴在这里和大家一起交流php!

我的最新图片

Open Toolbar