rt:
由于前台是用d5开发的,现在买了个短信猫必须要用d7开发而且是前台是非阻塞的,后台的服务器用线程阻塞的,两者能通讯吗?
还有线程阻塞怎么写啊?
我对这个东西不太了解啊
由于前台是用d5开发的,现在买了个短信猫必须要用d7开发而且是前台是非阻塞的,后台的服务器用线程阻塞的,两者能通讯吗?
还有线程阻塞怎么写啊?
我对这个东西不太了解啊
解决方案 »
- devExpress组件安装冲突的问题。ExpressPageControl 2和DevExpress QuantumGrid 4.5.2安装相冲,请问如何解决。
- 谁知道广州市奥杰信息技术有限公司这个公司如何?
- 兄弟们,有没有人安装过netware 4.11的服务器 200分求教
- 求思路,DELPHI倉位圖的創建,根據不同的值顯示不同顏色
- 一个关于小数精度的问题,请教各位帅哥!!!
- 关于DBGrid的问题
- 谁知道哪里可以下载delphi6的补丁?谢谢
- 关于vb转型到delphi有什么建议么?
- 不兼容的文件类型和文件扩展名
- 高分求助:如何在stringgrid中显示一组图象?每一副图象占用一个CELL
- 我在做一个ACTIVEX控件,请问能不能向程序在运行时写入本身一些东西一样,向我的控件写入东西
- 求助有关listview的color问题
我看了一下d7的internet下面的chat聊天程序就把它的线程代码搬过来不知道行不行啊?//------------- TClientDataThread impl -----------------------------------------
constructor TClientDataThread.Create(CreateSuspended: Boolean);
begin
inherited Create(CreateSuspended);
FreeOnTerminate := true;
ListBuffer := TStringList.Create;
end;procedure TClientDataThread.Terminate;
begin
ListBuffer.Free;
inherited;
end;procedure TClientDataThread.Execute;
begin
Synchronize(synchAddDataToControl);
end;procedure TClientDataThread.synchAddDataToControl;
begin
TargetList.AddStrings(ListBuffer);
end;
//------------- end TClientDataThread impl -------------------------------------
procedure TForm1.TcpServer1Accept(Sender: TObject;
ClientSocket: TCustomIpClient);
var
s: string;
DataThread: TClientDataThread;
begin
// create thread
DataThread:= TClientDataThread.Create(true);
// set the TagetList to the gui list that you
// with to synch with.
DataThread.TargetList := memRecv.lines; // Load the Threads ListBuffer
{DataThread.ListBuffer.Add('*** Connection Accepted ***');
DataThread.ListBuffer.Add('Remote Host: ' + ClientSocket.LookupHostName(ClientSocket.RemoteHost) +
' (' + ClientSocket.RemoteHost + ')');
DataThread.ListBuffer.Add('===== Begin message =====');}
s := ClientSocket.Receiveln;
while s <> '' do
begin
DataThread.ListBuffer.Add(s);
s := ClientSocket.Receiveln;
end;
// DataThread.ListBuffer.Add('===== End of message ====='); // Call Resume which will execute and synch the
// ListBuffer with the TargetList
DataThread.Resume;end;
这样是不是多线程的,当有多个客户端发送消息时,是不是每个都有一个线程会话?
搞不太清楚,请高手指点一下?
var
Cmd : string;
msg : TSERVER_CTRL_MSG;
begin
try
Cmd := AThread.Connection.ReadLn(#$A); //读取命令
zeromemory(@msg, sizeOf(TSERVER_CTRL_MSG)); if Uppercase(cmd) = Uppercase('BEGIN') then
begin
WriteLn('send the compressor''s output format to the client as the decompressor''s input format');
StrCat(@msg.strCommand, 'Set Bitmap Info');
copyMemory(@msg.strContent, Self.m_pOutInfo, sizeOf(TBitmapInfo));
msg.nContentUsedByte := sizeOf(TBitmapInfo);
//Socket.SendBuf(msg, sizeOf(TServer_CTRL_MSG));
AThread.Connection.WriteBuffer(msg, sizeOf(TServer_CTRL_MSG));//发送到client
Exit;
end;