procedure TForm1.ServerClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
p:pchar;
length:longint;
Count,i:Integer;
Tempstr:pchar;
begin
p:=nil;
while socket.ReceiveLength>0 do begin
length:=socket.receivelength;
Getmem(p,length);
TRY
socket.ReceiveBuf(p^,socket.receivelength);
Count:=Server.Socket.ActiveConnections;
for i:=0 to Count-1 do
Server.Socket.Connections[i].SendBuf(p^,length);
FINALLY
FreeMem(p);
END;
end;
Tempstr:=pchar('receiveOk'#13#10);
socket.SendText(TempStr);//c
end;
//Server是一个TsocketServerclient端每次发一个信息,得到的是发去的信息+'receiveOk' ,按设想应该是(如客户端发'test')
testreceiveOk
问题是:client得到的有两种
1.testreceiveOk
2.test
receiveOk
不确定,且感觉和client的发送频率无关请明眼人指点一二.
Socket: TCustomWinSocket);
var
p:pchar;
length:longint;
Count,i:Integer;
Tempstr:pchar;
begin
p:=nil;
while socket.ReceiveLength>0 do begin
length:=socket.receivelength;
Getmem(p,length);
TRY
socket.ReceiveBuf(p^,socket.receivelength);
Count:=Server.Socket.ActiveConnections;
for i:=0 to Count-1 do
Server.Socket.Connections[i].SendBuf(p^,length);
FINALLY
FreeMem(p);
END;
end;
Tempstr:=pchar('receiveOk'#13#10);
socket.SendText(TempStr);//c
end;
//Server是一个TsocketServerclient端每次发一个信息,得到的是发去的信息+'receiveOk' ,按设想应该是(如客户端发'test')
testreceiveOk
问题是:client得到的有两种
1.testreceiveOk
2.test
receiveOk
不确定,且感觉和client的发送频率无关请明眼人指点一二.
解决方案 »
- Access violation at address 582d86a9 in module 'wmp.dll'
- 用DELPHI向SQLSERVER还原了一个数据库,能不能让它不出现在已有的注册中?
- 如何保存1对多结构的多表查询???
- 如何对QRLable进行动态赋值呀?
- fastReport报表问题,如何固定主项数据行数?
- 那位有delphi的课程设计能不能发给我(包含说明文档的)
- DBgrid的数据更新,统计问题
- 关于TIWDatePicker1控件的问题?
- 求助:火车条形码的解码哪位大侠能提拱啊?
- 小调查:这里有多少人愿意在网上合作开发项目?
- 解析js代码的问题,请高手帮帮忙呀
- 急:如何设置RichEdit行间距?
以前在VB用SOCKET时就遇到过...
Server.Send -> Client.Read
ClientSocket1.Active := True;
ClientSocket1.port := 1024
这段代码执行完不会触发ServerSocket1ClientConnect 和 ServerSocket1ClientRead 事件
怎么回事呢
1.在数据包的前面加上长度位,标识这个包的长度。
2.用一个固定的东东结束一个数据包(比如回车),然后编程分析,如 HTTP 协议。(推荐)
procedure TForm1.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
re:pchar;
sbuf:string;
relong:integer;
begin
re:=nil;
while socket.ReceiveLength>0 do
begin
//申请内存
re:=AllocMem(socket.receivelength);
TRY
relong:=socket.ReceiveLength;
Socket.ReceiveBuf(re^,Socket.receivelength);
sBuf:=strpas(re);
Setlength(sbuf,relong); //count lenght
TotalLen:=TotalLen+ relong;
S1.Panels.Items[1].Text:='Total Received (Byte): ' + IntToStr(TotalLen);
S1.Update();
FINALLY
freemem(re);
END;
M1.Lines.Add(sbuf);
end;
end;//memo M1列出来的结果是
问题是:client得到的有两种
1.testreceiveOk
2.test
receiveOk
不确定,且感觉和client的发送频率无关to delphi2006(十三楼左转) :请明示!
procedure TForm1.btnSendClick(Sender: TObject);
var
i:integer;
Count:Integer;
begin
Count:=Server.Socket.ActiveConnections;
for i:=0 to Count-1 do
Server.Socket.Connections[i].SendText(edtSend.text);
end;
这时的Server.Socket.ActiveConnections最多能有多少呢?
一般会支持多少个客户端?