僵哥(unsigned)在线状态 12小时前

社区头衔:
社区专家 (专家排行榜
社区生日:
2002-01-15 |生日:1982-03-26
所在城市:
中国 浙江 杭州
技术专长:
C++Builder,Delphi,ERP,IOCP,SQLServer,VB,多线程
开发工具:
delphi
兴趣爱好:
(无)
个人简介:
性格开朗,爱好生活,对生活有热情,对工作有激情,文盲
所在行业:
所在公司:
 
(仅好友可见)
联系方式:
(仅好友可见)
 
编辑我的资料
人气:
[人气排行榜] 共 5713 人访问 / 查看详细
专家分:
[专家分排行榜] 共 74814 分 / 查看详细
可用分:
[可用分排行榜] 共 1864 分
个人动态
昨天
09月04
留言
查看全部

共 11 条留言

hedadt 2008-09-05

使用indy现需要循环将数据库的数据发往客户端,现速度较慢,如果打包发送给客户端是否速度会快些?

hljandasunyu 2008-08-29

我做的Socket api程序,客户端发送一个结构体,结构为:     TSockMsg=record   //网络发送消息结构         Head:array [0..3] of char;         CH:integer;         //通道         ComType:integer;   //命令类型              Command:integer;   //命令         Content:array [0..255] of char;    //命令内容  string[255]string     end;     PTSockMsg = ^TSockMsg; 客户端发送     Head := #5#2#1#31;    CH := 1;    ComType := 2;    Command := 3;    Content := 'Hello'; 发送到服务器端后,服务器使用一个260字节的缓冲区接收,接收内容为: (#5, #2, #1, #31, #1, #0, #0, #0, #2, #0, #0, #0, #3, #0, #0, #0, 'H', 'e', 'l', 'l', 'o', #0, #0, #0, ...共260字节) 我想在服务器端转换为下面这个结构     TSockMsg=record   //网络发送消息结构        CH:integer;         //通道         ComType:integer;   //命令类型              Command:integer;   //命令         Content:string;    //命令内容       end;     PTSockMsg = ^TSockMsg; 我用的方法是:(recvBuf为缓冲区接收的内容)         TempStr := copy(recvBuf,5,4);         RecvCmd.CH := PInteger(PChar(TempStr))^; //获得CH         TempStr := copy(recvBuf,9,4);         RecvCmd.ComType := PInteger(PChar(TempStr))^; //获得命令类型         TempStr := copy(recvBuf,13,4);         RecvCmd.Command := PInteger(PChar(TempStr))^; //获得命令         RecvCmd.Content := copy(recvBuf,17,length(recvBuf)-16); 昨天你告诉我的PInteger(PChar(TempStr))^ 方法 #1#0#0#0确实为 1,但在我的程序里执行总是出现一个很大的数字,请问我应该怎样处理。

yangshuosky 2008-08-24

您看错我的问题了……这个你回答过我了,我要问的是“请问”后面的问题。谢谢!

僵哥 回复于 2008-08-24

WSARecvFrom的投递可以一次性投递一个到多个.

yangshuosky 2008-08-23

请问完成端口可以用UDP协议吗?一般讲述都是ACCPET()然后关联到完成端口。但是UDP不需要这个函数,可以用完成端口吗? 发表于:2008-07-28 10:41:111楼  对于UDP,在BIND之后就做关联,然后带上Overlapped参数调用WSARecvFrom/WSASendTo即可. 请问:是投递一个 WSARecvFrom请求然后都是完成端口处理数据过后在线程池中再投递,还是需要一个类似侦听的线程不断的循环投递这个请求啊?

僵哥 回复于 2008-08-24

UDP也可以使用完成端口,只要在调WSASocket的时候设置flag为WSA_FLAG_OVERLAPPED,在Bind成功之后,再与完成端口关联,之后的WSARecvFrom/WSASendTo附上OVERLAPPED结构即可.

太恒 2008-08-06

哈哈,久违了!不好意思,刚看到消息,实在对不住:(。以后还要多向你学习啊:)

僵哥 回复于 2008-08-07

太客气了.兄弟有需要帮忙的地方,还望不吝赐教才是.

高腾 2008-08-01

僵哥好功夫!学习了~

邓豪 2008-06-06

顺便问一句,服务器N次循环发N个包给客户端,客户端是一次就接收完所有的包呢?还是必须用一个循环N次才能把数据接收到缓冲中去。问题有点多哈,谢谢了!

僵哥 回复于 2008-06-07

每一个包,以一种方式约定一个规则,用于分包,比如先发送一个双字节或者四字节表示该包的长度,如此你就可以先接收这个双字节或四字节的长度值,然后再依照其值来接收后续的数据,收完之后,再收一个双字节或四字节的长度,依此类推...

邓豪 2008-06-06

具体问题如下:<br/>1.采用tcp进行传输,自己定义的包协议,请问,在进行传输的时候,包的大小多大比较合适?<br/>2.在服务器端用了一个循环发一批包,但我在客户端只收到第一个包,其他包没有收到,请问僵哥,是不是因为客户端阻塞了?对此你有什么好的建议呢?谢谢!

僵哥 回复于 2008-06-06

1.TCP当中的协议包,只是你自己用来划分业务的一个功能包,可以大到几百兆,都是可行的,只要处理得当就行;<br />2.这一批包是否有标识大小,也就是说客户端不至于把这一批(多个)包当成一个包来处理?

僵哥 2008-06-01

对于missye1437 这位朋友,其实我想说的是,一个人要想学习就要扎扎实实地学,虚心的求教,但绝不可以发了贴子不闻不问,人家辛辛苦苦地回了贴子(http://topic.csdn.net/u/20080523/01/bba4af22-58e6-4c4f-8efe-c780052a7577.html,发表于:2008-05-23 01:23:34),他又另外发一份(http://topic.csdn.net/u/20080529/23/15c1c3f5-0217-4386-8dc1-5b079f1e28ba.html,发表于:2008-05-29 23:43:32),甚至是直接“哪位可以提供一下 send 数据结构struct 的实例 源文件. 注意,要源文件.”,什么叫源文件?CSDN上从.h的头文件到.cpp的源文件代码贴全呢?还是直接发一份文件?更何况说不是免费帮干活的,这不是我说的。回贴的人,没有任何一个人是有义务的,毕竟来这里回个贴没拿一丁点好处,谁也不是说坐着就有人送吃送喝来的。都需要辛辛苦苦地工作,生活到处都是压力。只不过是大家都是过来人,知道那种求知阶段的心理,有空的时候只是尽量回复一下,当然也不可能回复得如何详尽(个人觉得,本人回复贴子在很多时候还是非常尽细的)。

missye1437 2008-05-31

我到美国找去,中国人大部分穷疯

僵哥 回复于 2008-06-01

哪个美国人不要工资白忙活的?