我使用ServerSocket与ClientSocket建立连接,Client向Server发送数据可以收到,而当Server向Client发送数据时却报错:Project test.exe raised exception class ESocketError with message 'Windows socket error: (10057), on API 'send''. Process stopped. Use Step or Run to continue.我用Blocking和NonBlocking都试过了,这是怎么回事呢?

解决方案 »

  1.   

    错误代码的含义是,Socket未连接,可为什么Client能发送数据呢?
    Socket error 10057 - Socket is not connected
      

  2.   

    我认为是你服务器端发送消息的代码写错了,一个客户端应用程序只能一个服务器端,而服务器端却连接多个客户端,所以客户端给服务器端发送消息,只能给服务器发,而服务器发送消息时则必须指定客户端才行,从报错来看,是因为你没有指定客户端而造成的。
    服务器端发送消息,是你可以用如下代码:
    ServerSocket1.Socket.Connections[i].SendText('给第i+1个连接服务器的客户端发消息!');
    你如果只有一个客户端时,i=0;
      

  3.   

    可我是在ServerSocket的OnClientRead事件里写的sendtext
      

  4.   

    还是服务器端写错了,你应该这么写:
    ServerSocket的OnClientRead
      Socket.sendText;
    就是说,直接使用刚才receivetext的socket就可以了!如果还不行,ServerSocket的OnClientRead的源码上来,我给你解决
      

  5.   

    由于一个服务器段可以连接多个客户端,所以必须指定具体发送的客户端。必须具体指定。
    这样指定:serversocket.socket.connections[i].sendtext()。其中connections[i]就是指那一个客户端。