Windows Sockets code Error Description
------------------------------------------------------------------------ WSAEINTR 10004 Interrupted system call.
WSAEBADF 10009 Bad file number.
WSEACCES 10013 Permission denied.
WSAEFAULT 10014 Bad address.
WSAEINVAL 10022 Invalid argument.
WSAEMFILE 10024 Too many open files.
WSAEWOULDBLOCK 10035 Operation would block.
WSAEINPROGRESS 10036 Operation now in progress. This error is
returned if any Windows Sockets API
function is called while a blocking
function is in progress.
WSAEALREADY 10037 Operation already in progress.
WSAENOTSOCK 10038 Socket operation on nonsocket.
WSAEDESTADDRREQ 10039 Destination address required.
WSAEMSGSIZE 10040 Message too long.
WSAEPROTOTYPE 10041 Protocol wrong type for socket.
WSAENOPROTOOPT 10042 Protocol not available.
WSAEPROTONOSUPPORT 10043 Protocol not supported.
WSAESOCKTNOSUPPORT 10044 Socket type not supported.
WSAEOPNOTSUPP 10045 Operation not supported on socket.
WSAEPFNOSUPPORT 10046 Protocol family not supported.
WSAEAFNOSUPPORT 10047 Address family not supported by protocol
family.
WSAEADDRINUSE 10048 Address already in use.
WSAEADDRNOTAVAIL 10049 Cannot assign requested address.
WSAENETDOWN 10050 Network is down. This error may be
reported at any time if the Windows
Sockets implementation detects an
underlying failure.
WSAENETUNREACH 10051 Network is unreachable.
WSAENETRESET 10052 Network dropped connection on reset.
WSAECONNABORTED 10053 Software caused connection abort.
WSAECONNRESET 10054 Connection reset by peer.
WSAENOBUFS 10055 No buffer space available.
WSAEISCONN 10056 Socket is already connected.
WSAENOTCONN 10057 Socket is not connected.
WSAESHUTDOWN 10058 Cannot send after socket shutdown.
WSAETOOMANYREFS 10059 Too many references: cannot splice.
WSAETIMEDOUT 10060 Connection timed out.
WSAECONNREFUSED 10061 Connection refused.
WSAELOOP 10062 Too many levels of symbolic links.
WSAENAMETOOLONG 10063 File name too long.
WSAEHOSTDOWN 10064 Host is down.
WSAEHOSTUNREACH 10065 No route to host.
WSASYSNOTREADY 10091 Returned by WSAStartup(), indicating that
the network subsystem is unusable.
WSAVERNOTSUPPORTED 10092 Returned by WSAStartup(), indicating that
the Windows Sockets DLL cannot support
this application.
WSANOTINITIALISED 10093 Winsock not initialized. This message is
returned by any function except
WSAStartup(), indicating that a
successful WSAStartup() has not yet been
performed.
WSAEDISCON 10101 Disconnect.
WSAHOST_NOT_FOUND 11001 Host not found. This message indicates
that the key (name, address, and so on)
was not found.
WSATRY_AGAIN 11002 Nonauthoritative host not found. This
error may suggest that the name service
itself is not functioning.
WSANO_RECOVERY 11003 Nonrecoverable error. This error may
suggest that the name service itself is
not functioning.
WSANO_DATA 11004 Valid name, no data record of requested
type. This error indicates that the key
(name, address, and so on) was not found.
解决方案 »
- 高手请进!-- MSComm 控件能否实现在对方没有察觉的情况下得知对方是否开机?
- 怎样给动态创建的combobox添加 ITEMS
- 高手帮帮忙!
- 散分求助(急!)
- 寻找wise高手,有关快捷方式和“找不到数据表”的问题
- 请问大家插入主表明细表时是如何处理的?非常感谢!
- 多硬盘的情况下,读取每个硬盘的容量
- dbgrideh多标头导出excel
- 怎样把检索的数据赋给变量?
- 神马原因?-------Fastreport不能进行乘法法运算?
- 在winsocket开发中,服务器端什么情况使用异步方式或blocking方式?同样地在客户端怎么对这两种方式进行选择?这两种方式各有什么优缺点?Thanks!!!
- 李维的<ADO/MTS/COM+高级程序设计>中第七章中的问??
ServerSocket是封装了作为Server既服务器端的Socket的一个控件。在应用程序的Form中加入了ServerSocket之后,应用程序就可以作为一个服务程序而存在。当ServerSocket激活以后,正常状态下处于侦听状态,等待客户程序的连接。客户端请求连接时,启动了一个新的线程,接受客户的请求,完成连接之后,就可以给客户提供服务,服务完成之后,终止网络连接,线程退出。而主线程仍处于侦听状态,可以接受多个客户的连接请求。并可同时提供服务。
TserverSocket 的类继承关系如下:
Tobject
Tpersistent Tcomponent TcustomSocket TcustomServerSocket
TserverSocket
ServerSocket控件的属性
(1) Active
属性为true时,进入侦听状态,等待客户连接。
(2) ServerType属性
指明ServerSocket的类型,可取的值有:stNonBlocking,stThreadBlocking两种。
当ServerSocket设为stThreadBlocking,则每当接受一个客户的连接就自动生成一个线程,以处理客户的各种请求。当通过它发送或接受信息时,线程就会自动进入休眠状态直到数据传输完毕,然后会发出OnClientRead或OnClientWrite事件通知,让主线程进行处理。
把ServerSocket设定为stNonBlocking,则Socket可以异步的处理数据接收和发送。默认情况下,所有的客户连接的处理都是在单一的线程中进行的,当接收到数据或要发送数据时,也会发出OnClientRead和OnClientWrite事件通知。
(3) ThreadCacheSize属性
指明最大能有最大能有多少个线程在等待新的用户连接。
当Servertype是stThreadBlocking型时,每接受一个用户连接就要产生一个新的线程,为了提高系统的性能,ServerSocket会把已经断开的客户线程保留在缓冲区里。而不是释放他们。这样当一个新的请求到来的时候,就不必创建新的线程能减少所用的时间提高性能。
ThreadCacheSize的值不能设的太小,否则许多时间会浪费在创建和释放线程上,当然也不能太大,否则,系统资源(如内存)浪费太大,也不利于提高系统性能。
(4) Port属性
指明ServerSocket提供服务所在的端口号。
(5) Service 属性
提供服务的名称。
如果ServerSocket已经启动,任何企图改变Port和Service属性的值将会产生一个EsocketError的异常。
(6) name属性
(7) Socket属性
是一个TserverWinSocket类的对象,描述了服务器作为侦听端的特性。
Socket对象常用的属性有:
Connected,LocalAddress,LocalHost,LocalPort,RemoteAddress,RemoteHost,
RemotePortd。
ActiveConnections属性:整型(Integer),指明了ServerSocket当前正在打开的已经被接受了的客户请求,可以通过它来查看ServerSocket 的使用情况。
AciveThreads属性:整型。指明了ServerSocket当前正在使用的TserverClientThread线程对象的数目。通过本属性的值,可以监看线程的使用情况。对于stThreadBlocking型的ServerSocket,每接受一个客户的连接,ActiveThread记数就会加一。
IdleThread 属性:整型。指明了在当前在线程缓冲区内,但是没有使用的线程的对象的数目。通过这一值的大小可以检查ThreadCacheSize的取值是否合理。
Connections属性:这是TcustomWinSocket对象数组。该数组的下标值是从0到ActivConnection-1。通过这一数组可以访问每一个客户端相连的Socket.。
ServerSocket控件的方法
(1) Open方法
初始化ServerSocket,把Active属性设为True, 进入侦听状态,等待客户连接。
(2) Close方法
终止所有的Socket连接,并释放网络资源,把Active属性的值设为False,ServerSocket不在接受客户端的连接请求。
(3) Socket对象的方法
Socket对象的常用方法有:ReceiveLeghth,ReceiveText,ReceiveBuf,Sendtext,SendBuf等。
ServerSocket的事件
(1) OnClientConnect事件
本事件发生在连接请求被接受之后,可以开始提供服务。
(2) OnClientDisconnect事件
当某一客户连接被终止时,产生本事件,在本事件中可以进行终止后的清除工作,如释放相关的内存等。
(3) OnClientRead 事件
当ServerSocket收到客户发送过来的文件之后,发出本事件的通知,要求处理数据响应客户的请求。
对于ServerType是stThreadBlocking的Server Socket,应使用TwinSocketStream对象来读取数据。
(4) OnClientSocketWrite事件
在ServerSocket要向客户发送数据的时,发出本事件通知。同样 对于ServerType是stThreadBlocking的Server Socket,应使用TwinSocketStream对象来读取数据。
(5) OnClientError事件
同ClientSocket的Onerror事件。
谢谢你!
我看完你的读书笔记,感觉就是Delphi帮助的翻译。
你能给我一个sdThreadBlocking模式下服务器端的实例吗?
[email protected]
帮帮忙。收到以后马上给分