帮我看一下这个socket错误(参与有分)

huche 2001-10-30 03:56:03
我在使用TClientSocket用SendBuf发送数据包时出现如下,错误,谁帮我看一下是什么错?谢谢!!
Windows socket error: 在一个非套接字上尝试了一个操作。 (10038), on API 'send'

---------
头五位参与者每人五分,解决问题者五十分,不足五位参与者已经解决问题,剩余部分分数送解决问题者。谢谢!!
...全文
1035 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Skywings 2001-11-20
  • 打赏
  • 举报
回复
好象ESocketError是C++ Builder的try catch不能捕捉的异常
huche 2001-10-31
  • 打赏
  • 举报
回复
To szwxj(甲骨文) 
如果这样,我每发一次包岂不都要同过产生OnConnect事件才能发送??
zTommy 2001-10-31
  • 打赏
  • 举报
回复
你把源程序贴出来吧,这样很难看出问题。
szwxj 2001-10-30
  • 打赏
  • 举报
回复
把你Open之后的代码放到TClientSocket的OnConnect事件中,否则,SendBuf永远会出错。
另外一种方案就是阻塞方式,但不推荐。
781014 2001-10-30
  • 打赏
  • 举报
回复
啊。这个问题我还没时间去研究不过你要是想搞NETBIOS到还是可以和我一起来搞。
huche 2001-10-30
  • 打赏
  • 举报
回复
非阻塞(ctNonBlocking)
.
.
.
Socket->Host=Ip;
Socket->Port=StrToInt(Port);
Socket->Socket->Connect(Port);
Socket->Open(); //此行语句有无都出错,放connect前面也出错。如果放上一句前面出错时会自动断开连接。
.
.
.
k = SendData.Length();
char* buf=new char[k];
for(i=1,j=1;i<=k;i++)
{
if(SendData[i]==char(1))
{
s1=SendData.SubString(j,i-j);
strcpy(buf+j-1,s1.c_str());
j=i+1;
}
}
try
{
Socket->Socket->SendBuf(buf,k);
}
catch(Exception &e)
{
InsertMsg(e.Message,true);
}
gloom 2001-10-30
  • 打赏
  • 举报
回复
可以贴出部分代码么?
szwxj 2001-10-30
  • 打赏
  • 举报
回复
是不是调用SendBuf之前,没有Open?
注意,如果TClientSocket是非阻塞的(默认),那么Open是立即返回的,但此时并没有真正建立连接。
Liusp 2001-10-30
  • 打赏
  • 举报
回复
详细点?
cctime 2001-10-30
  • 打赏
  • 举报
回复
看一下程序片断

13,871

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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