社区
Delphi
帖子详情
delphi里clientsocket控件的问题!急!急!急!
tang_xue
2001-04-19 06:10:00
我用clientsocket1.socket.sendbuf(myPCA2C2ISMG,sizeof(myPCA2C2ISMG));发送信
息,却不成功!请问什么原因?高手们帮帮忙!!!
其中myPCA2C2ISMG为记录类型!
...全文
463
10
打赏
收藏
delphi里clientsocket控件的问题!急!急!急!
我用clientsocket1.socket.sendbuf(myPCA2C2ISMG,sizeof(myPCA2C2ISMG));发送信 息,却不成功!请问什么原因?高手们帮帮忙!!! 其中myPCA2C2ISMG为记录类型!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kkk321
2001-04-21
打赏
举报
回复
关注
kingsong
2001-04-20
打赏
举报
回复
怎样叫几个信息。
可以信息之间加上自定义的分割符如#,然后一次发送,这需要接收方判断了。
我也没试过,如果发送方不停的执行sendtext,接收方read事件中来不及处理怎么办,是先放到缓存中,再一次处理收到的所有信息呢?还是发送方每个sendtext都会使接收方产生一个read事件。
tang_xue
2001-04-20
打赏
举报
回复
kingsong如果我用ClientSocket1.Socket.SendText('') ,怎么一次把几个信息送出去呀?
clacklin
2001-04-20
打赏
举报
回复
sizeof后面好象要+1吧?
kingsong
2001-04-20
打赏
举报
回复
我用的是这个ClientSocket1.Socket.SendText('')
tang_xue
2001-04-20
打赏
举报
回复
为什么没人帮我!
tang_xue
2001-04-20
打赏
举报
回复
请帮帮忙啊!
kingsong
2001-04-20
打赏
举报
回复
另:我想说说我用ClientSocket&ServerSocket的几点体会:
1、这类程序通讯不是重点,关键是C-S之间的通信协议,在写码之前,先好好搞搞。
2、当ServerSocket提供一个端口,而有多个ClientSocket去联时,那ServerSocket端将依次产生若干个Connection,为Connection[0],Connection[1]...,而ServerSocket靠这个来区分与哪个ClientSocket进行通信,这将是非常麻烦的事。因为当有一个ClientSocket断了时,余下的Connectiong将依次前移,即若Connection[m]断了,Connection[n]将变为Connection[n-1](n>m),那Server如何确定与哪个Client通讯。请教某大虾,说是做一些Health Check,Server每隔一段时间向所有Connection发信息,而Client即发个短信息标明身份。然后存放在一数组里。实现起来好像也很麻烦。
3、ServerSocket是用一个Read事件来接收信息,因此必须判断是哪个ClientSocket发来的,因此ClientSocket发信息时要带上自己的标识。(说到底是通信协议问题)。
4、若是ClientSocket.Active:=false,那ServerSocket将会立刻触发ClientDisconnect事件。而若是网线断了,则会需要很长时间。
题外话,曾开发过打字比赛用的软件,比赛前一天一切OK,比赛那天,与ServerSocket怎么也联不通(网络当然没问题),丢了一个大脸,到现在也不知道是什么原因。老天啊,给我个理由吧。
kingsong
2001-04-20
打赏
举报
回复
是什么不成功?是服务器端什么信息都收不到吗?建议几点:
1、保证端口一致,并且退出时一定将active:=false;否则不能二次运行。
2、用sendtext,肯定可以,我试过了。
3、将Tmyrecord中的string改为string[10],定个长度。我试了试,服务器端可以收到信息,但不知为何多了很多乱码。
供参考。
你程序没错。
tang_xue
2001-04-20
打赏
举报
回复
kingsong,你一定要帮帮我,是先放到缓存中,再一次处理收到的所有信息?我怎么才能一次发送一个记录类型的所有信息?下面是我错误的程序,请问我该怎么改?
Tmyrecord=record
NO:string;
name:string;
age:integer;
...
end;
myrecord:Tmyrecord;
if clientsocket1.Active=true then
clientsocket1.Active:=false;
with clientsocket1 do
begin
host:='192.168.4.142';
port:=1010;
active:=true;
socket.sendbuf(myrecord,sizeof(myrecord));
end;
Server
Socket
和
Client
Socket
控件
源码.rar_
Delphi
Server
Socket
_
client
sock
Server
Socket
,
Client
Socket
控件
源码,讲述内部实现原理
Server
SOCKET
和
Client
SOCKET
恢复
DELPHI
6 以后 无 SERVER
SOCKET
和
CLIENT
SOCKET
控件
包
delphi
源码基础的
Socket
通信
delphi
源码基础的
Socket
通信 利用Server
Socket
与
Client
Socket
控件
建立联接
Delphi
TCP/IP通信
用
delphi
6编写,利用server
socket
和
client
socket
进行通信的程序
Delphi
网络通信协议分析与应用实现pdf清晰
1.5.1
Client
Socket
组件 1.5.2 Server
Socket
组件 第2章 基本网络编程实例 2.1 获取IP地址 2.1.1 利用系统工具获得IP地址 2.1.2 使用GetHostByName函数来获取IP 2.1.3 使用WSAAsyncGetHostByName函数获取IP地址...
Delphi
5,388
社区成员
262,730
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章