关于TClientSocket与TServerSocket的简单问题
我用一对TClientSocket与TServerSocket实现从a程序到b程序的传输,完全没问题。但用另一对TClientSocket与TServerSocket实现b到a的传输时onClientRead却不能获取任何信息,但onClientConnect却能捕捉到连接。请高手指教。 问题点数:50、回复次数:22Top
1 楼LogoGEN(流氓)回复于 2003-12-03 12:32:18 得分 0
自己up一下~~Top
2 楼soundbug(兼职乞丐)回复于 2003-12-03 13:27:24 得分 0
两个程序之间是否有代理服务器或防火墙?Top
3 楼XKP(低等下人)回复于 2003-12-03 13:30:00 得分 5
绝世好upTop
4 楼liunini(妮妮)回复于 2003-12-03 13:39:17 得分 0
upTop
5 楼LogoGEN(流氓)回复于 2003-12-03 13:47:51 得分 0
没有啊代理`~~
就在本机运行,只是用了不同端口Top
6 楼soundbug(兼职乞丐)回复于 2003-12-03 14:11:21 得分 10
有些断口是系统已经定义号的,请注意你的端口号。换个端口试试Top
7 楼XKP(低等下人)回复于 2003-12-03 14:14:23 得分 0
upTop
8 楼halfdream(哈欠)回复于 2003-12-03 17:36:57 得分 10
阻塞方式下onClientRead是不起作用的.Top
9 楼LogoGEN(流氓)回复于 2003-12-03 20:15:36 得分 0
我的servertype = stNonBlocking。我换过端口,但还是没变化,我觉得如果端口不能用onClientConnect应该不能捕捉到连接!Top
10 楼jerryhrm(浪尽天涯)回复于 2003-12-03 21:02:47 得分 0
我在7.0怎么找不到这两个控件的,7.0的两个控件放在哪里啊在哪里啊Top
11 楼jerryhrm(浪尽天涯)回复于 2003-12-03 21:04:44 得分 0
是不是tcpclient和tcpserver呢??Top
12 楼LogoGEN(流氓)回复于 2003-12-03 22:43:42 得分 0
那两个组件好象要安装,以下是别人说的:Menu: Component/Install Packages/Add...,选择 Delphi Bin 文件夹下的 dclsockets70.bpl 文件,在 Internet 面板下就有了。
我的问题还没解决,英雄们救命啊`~Top
13 楼XKP(低等下人)回复于 2003-12-03 23:33:03 得分 0
upupTop
14 楼liuxingwen(阳光男人)回复于 2003-12-04 09:37:04 得分 0
我没有你那个问题,不过我传过来的信息,出现乱吗
up
upTop
15 楼trustmeok()回复于 2003-12-04 18:05:47 得分 5
你指的a 和 b 是TClientSocket与TServerSocket
还是主机?不同的程序?Top
16 楼seeder(seeder)回复于 2003-12-04 22:19:21 得分 0
如果有两个以上的client联接到server上的时候,都能正常联接成功,但是在server发数据的时候却只能有一个收得到。Top
17 楼solonet(赤岭雄鹰)回复于 2003-12-04 23:54:35 得分 0
TO: seeder(seeder) (
这是通信的线程号不对,所以只能和第一个通信.Top
18 楼LogoGEN(流氓)回复于 2003-12-11 08:42:07 得分 0
如果我一个服务端需要同时给不同IP的客户发送信息,一般是发送完一次后关闭连接然后再建立另一连接,还是可以用两个进程来同时进行发送???Top
19 楼seeder(seeder)回复于 2003-12-11 23:02:18 得分 10
那就用udp方式吧Top
20 楼XKP(低等下人)回复于 2003-12-12 17:23:12 得分 0
路过Top
21 楼CaoChengLu()回复于 2003-12-17 17:28:06 得分 10
本人用 Delphi5 试验如下,可以互相通信。
a 程序代码:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ScktComp;
type
TForm1 = class(TForm)
ServerSocket1: TServerSocket;
ClientSocket1: TClientSocket;
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
ServerSocket1.Active := True;
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.Lines.Add(Socket.ReceiveText);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Active := True;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ClientSocket1.Socket.SendText('From aaaa');
end;
procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
memo1.Lines.Add('connected');
end;
end.
object Form1: TForm1
Left = 192
Top = 114
Width = 313
Height = 249
Caption = 'b'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Button1: TButton
Left = 32
Top = 168
Width = 75
Height = 25
Caption = 'Link'
TabOrder = 0
OnClick = Button1Click
end
object Memo1: TMemo
Left = 24
Top = 24
Width = 249
Height = 121
Lines.Strings = (
'Memo1')
TabOrder = 1
end
object Button2: TButton
Left = 192
Top = 168
Width = 75
Height = 25
Caption = 'Send'
TabOrder = 2
OnClick = Button2Click
end
object ServerSocket1: TServerSocket
Active = False
Port = 8888
ServerType = stNonBlocking
OnClientRead = ServerSocket1ClientRead
Left = 104
Top = 56
end
object ClientSocket1: TClientSocket
Active = False
ClientType = ctNonBlocking
Host = 'ctixp'
Port = 9999
OnConnect = ClientSocket1Connect
Left = 168
Top = 56
end
end
b 程序代码:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ScktComp;
type
TForm1 = class(TForm)
ServerSocket1: TServerSocket;
ClientSocket1: TClientSocket;
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
ServerSocket1.Active := True;
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.Lines.Add(Socket.ReceiveText);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Active := True;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ClientSocket1.Socket.SendText('From aaaa');
end;
procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
memo1.Lines.Add('connected');
end;
end.
object Form1: TForm1
Left = 192
Top = 114
Width = 362
Height = 259
Caption = 'a'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Button1: TButton
Left = 80
Top = 168
Width = 75
Height = 25
Caption = 'Link'
TabOrder = 0
OnClick = Button1Click
end
object Memo1: TMemo
Left = 56
Top = 24
Width = 249
Height = 121
Lines.Strings = (
'Memo1')
TabOrder = 1
end
object Button2: TButton
Left = 208
Top = 168
Width = 75
Height = 25
Caption = 'Send'
TabOrder = 2
OnClick = Button2Click
end
object ServerSocket1: TServerSocket
Active = False
Port = 9999
ServerType = stNonBlocking
OnClientRead = ServerSocket1ClientRead
Left = 104
Top = 56
end
object ClientSocket1: TClientSocket
Active = False
ClientType = ctNonBlocking
Host = 'ctixp'
Port = 8888
OnConnect = ClientSocket1Connect
Left = 168
Top = 56
end
end
Top
22 楼XKP(低等下人)回复于 2003-12-18 13:37:08 得分 0
upTop
相关问题
- TServerSocket和TClientSocket问题
- 关于TClientSocket与TServerSocket连接时的用户验证问题!
- 关于TClientSocket与TServerSocket连接时的用户验证问题!
- 有关TServerSocket,TClientSocket.的问题。
- 在DELPHI7下有TClientSocket、TServerSocket吗?
- 请教TClientSocket及TServerSocket用法
- 用TServerSocket和TClientSocket连接后,TServerSocket怎么向TClientSocket发送数据?
- 请教关于TClientSocket与TServerSocket的基本用法,请大家给我上上课
- TClientSocket不断尝试与TServerSocket连接,运行一段时间后的问题!
- TServerSocket/TClientSocket 连接后断开的问题




