基于SOCKET的文件通讯程序(100分)

J

JAYLV

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠,我最近制作一基于SOCKET的通讯程序,使用TSOCKETS控件
(FOR DELPHI4),在服务器方式使用非堵塞模式,在客户端使用堵塞
模式,由客户向服务器端请求,获得响应传递二进制文件.

在客户端SCONNECT服务器端成功后,由服务器端发送字符串,
但客户端的的ONDATANEEDED与ONDATAAVAILABLE事件均无响应,
不知如何能得到客户端的回应.我最近才接触SOCKET通讯,希望曾
做过此类程序的大侠指点,最好能提供例子程序,谢谢!!!!!
 
我用那控件就根本没连通过. 呵呵.
所以现在我只用delphi自带的socket控件(TServerSocket, TClientSocket)
 
用dephi自已的socket吧,我试过的,可以用.
 
对d4带的就足够好了.
 
我使用过D4的SOCKET,报API错误.我在非堵塞状态下可成功
通讯,但堵塞状态下不行,请各位大侠指教!!!!
 
>>我使用过D4的SOCKET,报API错误
^^^^^^^^什么错?
 
目前我使用TSOCKETS控件,客户端在非堵塞方式下,在接收到
文件数据后发回收到的字节,服务端在接收此信息后再发出下
一段数据,如此可完成数据接收.

但在堵塞方式下,客户可连接于服务端,但服务端在发出信息后
TDATANEEDED事件与TDATAAVAILABLE事件一直无反应,不知如
何获得服务端数据
 
请各位大侠多多指教
 
请各位大侠多多指教
 
什么是非阻塞方式?就是当有数据传来是自动触发OnClientRead或OnClientWrite事件。
阻塞方式就不同了,是主动地去读!所以当然不触发事件了!
比如加个TTimer,每隔1s就去Server主动读一次。
 
我主动读过,但明明读缓冲区中有数据,确无法正确读出,
机器一直处于等待状态
 
对了,对于阻塞方式还有线程的问题。
 
考虑在服务端使用多线程,目前先不使用线程,等
通过后再增加改为线程程序
 
Delphi 4的Socket控件确实有点问题, 经常有东西它确读不出来, 而且经常莫名其妙
的停止反应. blocking 与nonblocking都一样.
 
D4中的控件在非阻塞方式下no problem.
一次传送>2KB的数据可能会出错!
 
呵呵,不好意思,能告书我什么是SHOCKET吗?
 
socket是一种通讯方式,一般使用TCP/IP协议,有点对点
的TCP方式与数据包的UDP方两种
 
顶部