导航
  • 主页
  • Windows SDK/API
  • 基础类
  • ActiveX
  • 数据库及相关技术
  • 网络及通讯开发
  • VCL组件使用和开发
  • 问答

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

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

---------
头五位参与者每人五分,解决问题者五十分,不足五位参与者已经解决问题,剩余部分分数送解决问题者。谢谢!!
...全文
1006 点赞 收藏 10
写回复
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
看一下程序片断
回复
发动态
发帖子
C++ Builder
创建于2007-08-02

1.3w+

社区成员

C++ Builder相关内容讨论区
申请成为版主
社区公告
暂无公告