关于ServerSocket发送数据(问题解决后必给分)

andrew80 2003-08-24 11:47:05
我使用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都试过了,这是怎么回事呢?
...全文
92 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tongki 2003-08-27
  • 打赏
  • 举报
回复
UP!
zaiai2003 2003-08-27
  • 打赏
  • 举报
回复
由于一个服务器段可以连接多个客户端,所以必须指定具体发送的客户端。必须具体指定。
这样指定:serversocket.socket.connections[i].sendtext()。其中connections[i]就是指那一个客户端。
sunrains 2003-08-27
  • 打赏
  • 举报
回复
还是服务器端写错了,你应该这么写:
ServerSocket的OnClientRead
Socket.sendText;
就是说,直接使用刚才receivetext的socket就可以了!

如果还不行,ServerSocket的OnClientRead的源码上来,我给你解决
andrew80 2003-08-24
  • 打赏
  • 举报
回复
错误代码的含义是,Socket未连接,可为什么Client能发送数据呢?
Socket error 10057 - Socket is not connected
andrew80 2003-08-24
  • 打赏
  • 举报
回复
可我是在ServerSocket的OnClientRead事件里写的sendtext
wcq8303 2003-08-24
  • 打赏
  • 举报
回复
我认为是你服务器端发送消息的代码写错了,一个客户端应用程序只能一个服务器端,而服务器端却连接多个客户端,所以客户端给服务器端发送消息,只能给服务器发,而服务器发送消息时则必须指定客户端才行,从报错来看,是因为你没有指定客户端而造成的。
服务器端发送消息,是你可以用如下代码:
ServerSocket1.Socket.Connections[i].SendText('给第i+1个连接服务器的客户端发消息!');
你如果只有一个客户端时,i=0;

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧