Delphi的TClientSocket初级疑难

在XE2下,使用TClientSocket,设置好Host和Port属性后,在设计期可以将属性Active更改为True,但是在运行期,运行代码:
cskOne.Active := True;
然后再查属性Active的值依然为False,多次尝试,无果!
即使使用代码替换:
cskOne.Open;
也一样无法将属性Active的值更改为True,很是纳闷。
补充说明,设计期直接设置属性Active的值为True,可以正常发送数据包,如果设计期为False后,运行期不能改为True,所以无法发送数据包。
求指明一条通往正解的道路,谢谢!

2个回答

TClientSocket默认是非阻塞模式, 也就是你设置active:=true以后 方法立刻返回, 但是此时还么有连接上, 连接上以后会触发onconnect事件

或者你改为阻塞模式 clienttype := ctBlocking

当我更改为阻塞模式:
clienttype := ctBlocking;
后在OnRead事件竟然没有收到消息,是不是要程序主动接收数据呢?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
delphi TClientSocket问题
socket.ReceiveText();赋值给string出现空应该怎么才能给string赋值
delphi中TClientSocket的小问题
在delphi里使用TClientSocket和TServerSocket。问题如下:Client如果没有连上Server就一直尝试连接;连上后,如果意外断掉,马上自动一直尝试连接。请问怎样在客户端程序中实现以上功能?zj181314@sina.com 谢谢
delphi 动态创建TClientSocket
delphi 动态创建TClientSocket后,rnClientSocket:= TClientSocket.Create(nil);rnClientSocket.OnRead := MySocketRead;rnprocedure MySocketRead(Sender: TObject; Socket: TCustomWinSocket);rnbeginrn这里为什么收不到信息啊??rnend;rn连接也是正常的,server端也发送数据了,客户端这就是什么信息也没收到。rn怎么能将我定义的事件与Clientsocket绑定在一起呢???
DELPHI疑难7问
1、怎样用SQL实现对数据库的备份与恢复?rn2、怎样才能使DBIMAGE正常显示*。JPG格式的图片?(数据库为BDE)请不要回答 为在其显示格式中加入*。JPG,我已试过,没用。rn3、怎样才能把DATETIMEPICKER的日期值写入相对应字段的的数据库?(在一个数据录入界面中)rn4、怎样实现把阿拉伯数据字转换为人民币大写?(要求加入自动识别功能,如用户输入18。00元,程序则自动转换为拾捌元,以此类推);rn5、TREEFREE控件有没有CLICK事件?rn6、rn FORM1 BUTTON1 DBEDIT1 TABLE1(含字段“材料名称”)rn FORM2 BUTTON2 DBGRID1 TABLE2(含字段“材料名称”)rn注:FORM以后的控件未位于FORM上rn问题:rn 当在FORM1中录入DBEDIT1数据时,单击BUTTON1则FORM2显示,在FORM2的DBGRID1中选择相对应的记录并单击BUTTON2则FORM2隐藏并显示FORM1,FORM1的DBEDIT1数据内容为FORM2的DBGRID1记录(即一个数据表的内容引用另外一个数据表,强调没有用到LOOKUP);rn7、在MDI应用程序中,怎样才能使同一个CHILFORM在主界面中只显示一个(即当用户调用相对应的窗体时,程序首先会判断此窗体是否已经打开,如已经打开则不执行任何动作,如没有打开则打开该窗体)rn-----------------------------------rn男儿不展风云志,空负天生八尺躯!rn-----------------------------------rnQQ:123128772rnE-MAIL:adah@orientalwide.com
Delphi编程疑难详解
Delphi窗体设计,MDI应用,控件的使用,文件、目录及驱动器,串口通信,windows系统控制,API技术,数据库等问题的详解。
Delphi之TServerSocket和TClientSocket多线程传输
Delphi之TServerSocket和TClientSocket多线程传输文字例子
Delphi Xe7 ,TClientSocket接收数据问题
在用TClientSocket接收数据的时候(在OnRead事件中),由于服务端不断的发送数据(图片),导致客户端程序出现假死现场,无法对窗口进行操作,哪位高手有解决办法?
Delphi TClientSocket 接收数据长度不稳定
请问各位大侠,有没有遇到这种情况??rn服务端是C#编写rn客户端为Delphi ,用的TClientSocket,非阻塞模式rnrn问题是,客户端在接收时10条数据,加密后大小在2K多,每次接收的情况不同,有时候可以一次性都接收到、有的时候就只能分两次接收,如果是第二种情况,在解密就会失败!你们谁遇到过,求大侠指点迷津,这到底是什么原因?????!!!!!
delphi源码TServerSocket 和TClientSocket文件传输
delphi源码TServerSocket 和TClientSocket文件传输
Delphi TServerSocket和TClientSocket通信问题
我现在做一个客户端、服务器通信问题,客户端不与数据库接触,而是服务器去查询数据库;rnrn客户端需要发送什么样的命令通知服务器去查询数据并把数据返回给客户端呢?rnrn有几个问题需要请教:rn1.客户端发送指令的类型,如何定义呢?rn2.服务器返回数据结果集的类型?rn3.发送数据的大小是否限制,如果太多数据要怎么处理呢?rnrn希望大侠们能给个具体实现的代码,比如定义类型,如果发送和接收这些! 刚接触Delphi,对通信没什么概念!诚心求助!谢谢!
delphi初级..
varrn max,i:integer;rn Arr:array[0..6] of integer=(8,5,-4,3,9,1,4);rnrnbeginrn Max:=arr[0]rn for i:=1 to 6 dorn if Arr[i]>Max then Max:=Arr[i];rn writeln('这些数中最大值是: ',max);rn readln;rnrn Arr:array[0..6] rn if Arr[i]>Max then Max:=Arr[i];rn我想知道下,这两句具体什么意思,有知道的解答下谢谢rnrn
delphi网络疑难(500分相送)
我做的东西是一个局域网中:rn 第一个程序要实现的功能是:先去查找局域网里面一个具体的IP号电脑,如果找到rn就得到那个电脑的共享文件夹,点击就将这个文件夹保存起来,如果觉得这个文件很重要,你可以拷贝到自己的电脑里面。rnrn 第二个程序要实现的功能是:要给局域网里的某一台电脑发送一个消息,问是否接受我rn发送的一个文件给他,就像QICQ里面的那个传送文件的功能,就此一个功能而已。rnrn谁有代码或者提供参考者,给我发信rnE-mail: alongjuan@etang.comrnrn我在线等待,完毕给分。rnrn
TClientSocket
请教,TClientSocket如何设置发送和接收缓冲区大小!
疑难!!!!!!
现 象: 在ORACLE的DABABASE中某个Table的数据经常异常丢失,但是无法判断原因.rn问 题: 在ORACLE里,有没有什么命令,通过它可以查询到,在最近一段时间对丢失数据的TABLE所执行的操作?rn
疑难
How to Setup gradle-2.2.1-all.zip Manually Delete the C:\Users\username.gradle folder Download http://downloads.gradle.org/distributions/gradle-2.2.1-all.zip Create a new project in android studio. Whe
疑难。
//:4: Data Abstractionrn...rnThere’s one last item to mention. In C, you could assign a void* to any other pointer like this:rnrnint i = 10;rnvoid* vp = &i; // OK in both C and C++rnint* ip = vp; // Only acceptable in Crnrnand there was no complaint from the compiler. But in C++, this statement is not allowed. Why? Because C is not so particular about type information, so it allows you to assign a pointer with an unspecified type to a pointer with a specified type. Not so with C++. Type is critical in C++, and the compiler stamps its foot when there are any violations of type information. This has always been important, but it is especially important in C++ because you have member functions in structs. If you could pass pointers to structs around with impunity in C++, then you could end up calling a member function for a struct that doesn’t even logically exist for that struct! A real recipe for disaster. rnrnrn我的问题是对下面这句:rnIf you could pass pointers to structs around with impunity in C++, then you could end up calling a member function for a struct that doesn’t even logically exist for that struct! rnrn我想不出一个例子、情形,用这个指针来让 member function 结束。rn谁能提醒?thanx.
delphi源码基础的TServerSocket 和 TClientSocket文件传输
delphi源码基础的TServerSocket 和 TClientSocket文件传输
Delphi关于TServerSocket/TClientSocket实现通信,
[img=http://img.my.csdn.net/uploads/201305/23/1369288759_7254.jpg][/img]rnrn如图所示rnrn第一,客户端连接,通过账号,密码,IP,端口,验证,;服务端那边连接状态列表,自动显示rnrn第二,客户端发送信息(信息为两部分组成,第一部分是edit1.text为类型为1,2,3,1为添加数据,2为修改数据,3为查询数据;第二部分memo1.text为数据),服务端接收信息并显示信息内容(edit1.text+memo1.text),然后根据edit1.text显示的类型,处理memo1.text数据,比如,为1,服务端就分析memo1.text的数据,添加到数据库,成功或者失败返回给客户端一个信息rnrn源码地址[url=http://download.csdn.net/detail/linzhen6790/5434619][/url]rnrn这个服务端的ServerSocketClientRead要怎么写呢
delphi TClientSocket的sendText()怎么捕获发送数据失败
delphi TClientSocket的sendText()怎么捕获发送数据失败
疑难 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
jdk源代码中..rnrncharloop, bufferloop, 是什么用处..rnrn如 :rnrnrn String readLine(boolean ignoreLF) throws IOException rn StringBuffer s = null;rn int startChar;rn boolean omitLF = ignoreLF || skipLF;rnrn synchronized (lock) rn ensureOpen();rnrn bufferLoop:rn for (;;) rnrn if (nextChar >= nChars)rn fill();rn if (nextChar >= nChars) /* EOF */rn if (s != null && s.length() > 0)rn return s.toString();rn elsern return null;rn rn boolean eol = false;rn char c = 0;rn int i;rnrn /* Skip a leftover '\n', if necessary */rn if (omitLF && (cb[nextChar] == '\n')) rn nextChar++;rn skipLF = false;rn omitLF = false;rnrn charLoop:rn for (i = nextChar; i < nChars; i++) rn c = cb[i];rn if ((c == '\n') || (c == '\r')) rn eol = true;rn break charLoop;rn rn rnrn startChar = nextChar;rn nextChar = i;rnrn if (eol) rn String str;rn if (s == null) rn str = new String(cb, startChar, i - startChar);rn else rn s.append(cb, startChar, i - startChar);rn str = s.toString();rn rn nextChar++;rn if (c == '\r') rn skipLF = true;rn rn return str;rn rn rn if (s == null) rn s = new StringBuffer(defaultExpectedLineLength);rn s.append(cb, startChar, i - startChar);rn rn rn rn
Delphi TServerSocket 和TClientSocket的基本通讯练习
Delphi TServerSocket 和TClientSocket的基本通讯练习
Delphi TServerSocket和TClientSocket两个组件的基本用法
笔者在工作中遇到对局域网中各工作站与服务器之间进行Socket通信的问题。现在将本人总结出来的TServerSocket和TClientSocket两个组件的基本用法写出来,希望与您分享。 ClientSocket组件为客户端组件。它是通信的请求方,也就是说,它是主动地与服务器端建立连接。 ServerSocket组件为服务器端组件。它是通信的响应方,也就是说,它的动作是监听以及被动接受客户端的连接请求,并对请求进行回复。 ServerSocket组件可以同时接受一个或多个ClientSocket组件的连接请求,并与每个ClientSocket组件建立单独的连接,进行单独的通信。因此,一个服务器端可以为多个客户端服务。 设计思路
关于delphi中 TClientSocket 和 TServerSocket的使用
怎样利用delphi中 TClientSocket 和 TServerSocket的阻塞方式(ctBlocking)rn传输比较大的数据流,最好提供完整的源代码
Delphi初级数据库编程(Access)
适合初学者学习<br>(在网上查到,觉得很不错,里面的网页为mht类型,打开有点慢)
初级Delphi问题
请各位大虾解答,谢谢!rnunit Unit1;rnrninterfacernrnuses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,rn Buttons, ExtCtrls;rnrntypern TAboutBox = class(TForm)rn Panel1: TPanel;rn ProgramIcon: TImage;rn ProductName: TLabel;rn Version: TLabel;rn Copyright: TLabel;rn Comments: TLabel;rn OKButton: TButton;rn Label1: TLabel;rnprocedure FormKeyDown(Sender: TObject; Var Key: Word;rnShift: TShiftState);rnprocedure OKButtonClick(Sender: TObject);rn privatern Private declarations rn publicrn Public declarations rn end;rnrnvarrn AboutBox: TAboutBox;rn//定义一个字符串用来接收用户的输入rns:string;rnrnimplementationrnrn$R *.DFMrnprocedure TAboutBox.FormKeydown(Sender: TObject; var Key: Word;rnShift: TShiftState);rnvarrndelaytime: TDatetime;rnbeginrn//如果按下ALT键、只接收字符rnif (shift=[ssalt]) and (key>=$41) and (key<=$5a) thenrnbeginrns:=s+chr(key);rnif s= 'EGGOUT' thenrnbeginrn//显示彩蛋rnlabel1.Visible:=true;rn//延迟代码rndelaytime:=now+encodetime(0rn0rn2rn0);rnwhile now Application.ProcessMessages;rnlable1.visivle:=False;rnend;rnend;rnend;rnprocedure TAboutBox.OKButtonClick(Sender: TObject);rnbeginrnclose;//程序结束rnend;rnend.rn[Error] Unit1.pas(50): Missing operator or semicolonrn[Error] Unit1.pas(51): Missing operator or semicolonrn[Error] Unit1.pas(52): Missing operator or semicolonrn[Error] Unit1.pas(53): Type of expression must be BOOLEANrn[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
一个delphi的初级问题
各位好,我初学delphi,现在现在做一套数据管理系统,在报表部分因字段太多了,需要分N页来显示,请问如何实现,最好是一个特简单的方法。谢谢各位了
delphi初级问题
小弟是正在学delphi的,遇到点问题,希望有人能帮帮我rnrn源码:rnunit Unit1;rnrninterfacernrnusesrn Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,rn Dialogs, StdCtrls;rnrntypern TForm1 = class(TForm)rn Edit1: TEdit;rn Button1: TButton;rn procedure Button1Click(Sender: TObject);rn privatern Private declarations rn publicrn Public declarations rn end;rnrnvarrn Form1: TForm1;rn T_COLOR: string;rnimplementationrnrn$R *.dfmrnrnprocedure TForm1.Button1Click(Sender: TObject);rnbeginrnT_COLOR:=edit1.Text;rncase T_COLOR ofrn'red':rnbeginrnform1.color:=clred;rnend;rn'green':rnbeginrnform1.color:=clgreen;rnend;rnelsernform1.color:=clsilver;rnend;rnend;rnrnend.rnrn报错:rn[Error] Unit1.pas(30): Ordinal type requiredrn[Error] Unit1.pas(31): Incompatible types: 'Integer' and 'String'rn[Error] Unit1.pas(35): Incompatible types: 'Integer' and 'String'rn[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'rnrn请问到底是什么错误呢
Delphi 两个初级问题
1。一个报表打印用 select * from **** 的结果有几百条记录,如何在一张纸上设定rn 只打40条记录,其他转为下一页打印。就是每张纸打印40条记录,以此类推。rnrn2。如何用Delphi 在本地硬盘中动态创建一个表。用来存放用 Select * from **** rn 查询 SQL Server 中一个表的记录。功能有如 Datapump ,但是我须要的是存放 rn 条件查询后的记录。rn 希望大虾的慷慨解囊,小弟在此 Thank you very much!rn
Delphi初级计算器源码
一个delphi写的初级计算器程序,该计算器可以让用户自行输入运算符号,非常适合初学Delphi的人参考。
delphi 的初级问题!!
typern TFrameForm = class(TForm)rn MainMenu1: TMainMenu;rn File1: TMenuItem;rn New1: TMenuItem;rn Open1: TMenuItem;rn N1: TMenuItem;rn Exit1: TMenuItem;rn Window1: TMenuItem;rn Tile1: TMenuItem;rn Cascade1: TMenuItem;rn Arrangeicons1: TMenuItem;rn OpenFileDialog: TOpenDialog;rn procedure Exit1Click(Sender: TObject);rn procedure New1Click(Sender: TObject);rn procedure Tile1Click(Sender: TObject);rn procedure Cascade1Click(Sender: TObject);rn procedure Arrangeicons1Click(Sender: TObject);rn procedure Open1Click(Sender: TObject);rn privatern Private declarations rn publicrn Public declarations rn end;rnrn下面类型申明到底是公有?还是私有?(怎么理解啊?)rn MainMenu1: TMainMenu;rn File1: TMenuItem;rn New1: TMenuItem;rn Open1: TMenuItem;rn N1: TMenuItem;rn Exit1: TMenuItem;rn Window1: TMenuItem;rn Tile1: TMenuItem;rn Cascade1: TMenuItem;rn Arrangeicons1: TMenuItem;rn OpenFileDialog: TOpenDialog;rn procedure Exit1Click(Sender: TObject);rn procedure New1Click(Sender: TObject);rn procedure Tile1Click(Sender: TObject);rn procedure Cascade1Click(Sender: TObject);rn procedure Arrangeicons1Click(Sender: TObject);rn procedure Open1Click(Sender: TObject);rnrn----------------------------------------rnrnprogram TextEdit;rnrnusesrn Forms,rn MDIFrame in 'MDIFrame.pas' FrameForm,rn MDIEdit in 'MDIEdit.pas' EditForm;rnrn$R *.RESrnrnbeginrn Application.Initialize;rn Application.CreateForm(TFrameForm, FrameForm);rn Application.Run;rnend.rnrn怎样在 Application.Initialize 函数体内写,我找来找去都没有发现可以写的地方!
Delphi初级问题
program Date;rn$APPTYPE CONSOLErnusesrn windows;rnrntypern Year=0..2010;rn Month=1..12;rn Day=1..31;rnvarrn Dayth,i,n:integer;rn m:Month;rn d:Day;rn y:Year;rnbeginrnread(m,d,y);rnDayth:=0;rnn:=m-1;rnfor i:= 1 to n dorn case i ofrn 1,3,5,7,8,10,12:rn Dayth:=Dayth+31;rn 2:rn if((y mod 4=0)and(y mod 100<>0)or(y mod 400=0))thenrn Dayth:=Dayth+29rn elsern Dayth:=Dayth+28;rn 4,6,9,11:rn Dayth:=Dayth+30;rnend;rn Dayth:=Dayth+d;rn writeln(Dayth);rn writeln('quit after 1 s');rn sleep(1000);rnend.rn这段程序为什么放到DELPHI2007里面运行的时候没显示的啊?rn运行的时候不是点哪个绿色的三角形吗?
一个DELPHI初级问题
代码中用到了第三方的VCL控件,编译成执行文件后,这个文件可以在没有这个VCL控件的其他机器上运行吗?rnrn如果用了OCX控件呢?
Delphi的初级问题....
1.有两个变量:rn Varrn A:Array [0..63] of Char;rn B:String;rn 问如何实现A:=B或B:=A;rnrn2.窗体上有两个按钮,大小,字体属性不一样,执行Button2:=Button1后,为什么Button2的处观属性没有变得和Button1一样。rnrn3.为什么执行WindowState:=wsMinimized后窗体象MDI子窗体一样缩小成屏幕上的一块,效果与点击最小化按钮不一样。如何达到这种效果。rnrn4.如何动态创建新的窗体及按钮等控件(窗体上已经有一个该控件或没有)rn
DELPHI的初级问题!
我用DELPHI编程在调试无错并运行完后总报告应用对象出错!然后蓝屏.不知为什么?
使用delphi画图的疑难,请帮忙!
使用FORM的CANVAS对象在FORM上画了一些图形(矩形图),然后在画出两条相互垂直的直线,作为标记鼠标移动所在。这一些都可以解决。rn 但是在两条标记线移动的过程中,由于他们都是画出来的,所以必然会覆盖背景上的矩形图,以至标记线移开后,在矩形图上会留下“痕迹”。如果此时在FORM1.ONMOUSEMOVE事件中重画矩形图是可以解决问题的,但是当图形太多,太复杂的时候,会导致屏幕闪烁或者显示太慢。请问有什么办法可以解决这个问题呢?rn 如果大家使用过股票分析软件的话,以上问题就是等于图形分析的时候,十字光标线在个股K线图上移动但不影响背景K线图。rn 我手上的分数不多,还请多多指教!rn rn
Delphi结合ASP使用疑难请教
小弟用D没有写过这方面的东东.可现在有这样一个需求需要写一个这样的东西.许求内容如下.rnrnASP+Access在远程服务器.rnrn用户使用Delphi编写的客户端向远程服务器ASP提交登陆信息.ASP把Delphi提交过来的信息写如到Access数据库里.rnrn希望那位大哥有这样的例子能给我一个.我现在就是不知道怎么下手.rnrn我需要的就是Delphi向ASP提交信息并用ASP对数据库进行操作的这样的一个例子.rnrn小弟先在这里感谢大家了.分不多.有了继续追加.rnrn小弟的EMail:wy1986awd@163.com
XP环境下Delphi代码编辑器中文字体疑难
众所周知,Delphi的代码编辑器默认是使用Courier New(一种打印机字体)的,在Windows9x/NT/2000下,代码编辑器的该字体能够正常显示中英文,但是一到了WindowsXP下,使用该字体显示的中文会变得很难看。rnrn其实不光是Delphi的代码编辑器碰到这个问题,在XP下几乎所有文本编辑器都有这个问题,Courier New字体的优势很明显——这种字体能较好地显示和打印代码,正因为如此,它也是很多编辑器的默认字体(比如C++ Builder、Edit Plus等等)。rnrnWin2000及以前版本都不存在这个问题,不知大家可有解决之道?已经试过将Windows2000下同名字体文件覆盖XP下Fonts目录,无效。不要告诉我更换别种字体!rnrn请看贴图:rn[img]http://www.shasal.com/DelphiFonts.gif[/img]rnrn我觉得区别很大:rn[img]http://www.shasal.com/DelphiFonts2.gif[/img]rnrn注意我指的是在 Windows XP 下(中文版英文版无所谓),而且,你的 Delphi 6 的代码编辑器字体必须是默认的rnCourier New 字体。
TClientSocket和TServerSocket
有谁知道:“asynchronous socket error 10061”是什么原因
TClientSocket缓冲区
用Timer每间隔50ms客户端向服务器发送数据,服务器判断数据包长度后再进行操作,可是运行一段时间后客户端的sendbuf就会返回-1,WSAGetLastError()为10035,服务器接收到的数据包长度也不符合要求,是因为客户端TClientSocket的缓冲区满了吗?可以改变缓冲区的大小吗?谢谢!
TClientSocket急!!!
请问我在同一台电脑上用两个TClientSocket分别连接到两个Server端,这两个ClientSocket的OnClientRead指向的是同一个处理程序。我发现在接收数据的时候,总是出现后一个帧的数据插入到前一个帧被接收。请问是什么原因???
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池