作者:--Fac_k- | 来源:互联网 | 2023-10-14 09:35
http:expert.csdn.netExperttopic12651265214.xml?temp.6446344感谢两位帮助.由于分太少,没有在这个帖子中给两位加分.在这里
http://expert.csdn.net/Expert/topic/1265/1265214.xml?temp=.6446344
感谢两位帮助.由于分太少,没有在这个帖子中给两位加分.
在这里给100分.每人50分.
小弟的分太少,不要怪我太小气啊.
///////////////////////////////////////////////////
pazee的回答:
大企鹅,这个问题我说说我的看法。
1.TSocketServer和TSocketClient的发送和接受机制你理解的有问题,
客户端的写和服务器端的读不是一一对应的。
写的时候是写进缓存的,不一定就发送了,反过来如果你客户端写了一个比较大的数据比如10K,那么服务段可能触发了n此ClientRead事件。
2.对于98和nt(2000是NT5,XP是NT 5.1)Socket也有却别,他们对于每个数据包的大小封装不同,但是这个问题你可以不考虑。
3.利用Socket写程序有个忌讳,就是你这个写法,比如客户端定义了一个I am ok.表示客户端的一个状态,而服务器端收到的可能是I am和OK两个包,你用简单的字符串比对是不行的,你需要建立一个接收的缓存,然后判断这个缓存的内容,不能再OnClientRead里面判断。
///////////////////////////////////////////////////////////////////////
copy_paste:
ClientSocket是阻塞还是非阻塞?
非阻塞的情况下,Active = true,会马上返回,但有可能没有联接上服务,然后可能就会延迟了,情况比较微妙吧。
/////////////////////////////////////////////////////////////////////
14 个解决方案
转到水园吧,偶差几分就1000分啦,耙子睡觉了,偶替他决定,相信他不会怪我这个英明的决定的。hoho...
扩充话题 1949 100
看看我的水分..啊哈哈..厉害吧...嘻嘻.
耙子睡觉了。我没有睡啊,给我2分吧。要不我删贴扣分。扣死你们两个!!!哈哈哈哈!
靠,比我高多了,看来以后要少给你点。。。嘿嘿,俺要超过你的。。。
to invalid;
我投降,我给你2分..啊哈哈哈...嘻嘻....哼哼..唧唧..
我也睡觉了.pazee(怕责阿)大哥不容易邓等啊.
怎么会不容易了?你看他发给我的消息:
发送者 pazee 发送时间 2002-12-17 5:35:33 删除 回复
估计你睡熟了,嗬嗬!。。。
我已经睡熟了.你发的消息我没有看到...嘻嘻...呼噜..呼噜..
刚上不来,哪有你这家伙爽,偶天天8点就起床了,哪像你到10点还睡意犹在。。。
^_^ 再给我几分 我就成四颗角了
谁要水分 我这里很多阿
以后到 DB版 我会多多照顾的阿 ^_^…… 否则……呵呵呵呵
给点吧……哈哈哈哈哈哈