首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络协议 >

调用socket send()返回失败是咋回事

2012-03-20 
调用socket send()返回失败是怎么回事?我的代码是这样写的:1、生成一个socketsocket1socket(AF_INET,SOCK_

调用socket send()返回失败是怎么回事?
我的代码是这样写的:
1、生成一个socket
socket1=socket(AF_INET,SOCK_DGRAM,0);
2、建立socket与服务器的连接
connect(socket1, (const sockaddr *)&server, len) ;//申请UDP套接字
3、发送数据
while(buf_len) 
{
  send( socket1, sendbuf, bytes, 0 );//发送rtp包
}

问题的现象是:对send()函数的调用一次成功一次失败,成功时返回发送的字节数,失败时返回-1.请问为何会出现send失败的情况?多谢各位大侠!

[解决办法]

探讨
to 千里孤行,谢谢你的回答!
如果不需要 connect,那我怎样向指定的IP地址的某个端口发数据呢?

[解决办法]
udp套接口也可以有connect函数的, 是解决当目的主机不可达的时候内核通知进程的问题,例如icmp消息

[解决办法]
用了connect为udp套接口指定了宿主机的ip地址端口号,
就可以直接用fread fwrite了

至于connect失败, “UDP客户进程或服务器进程仅仅在使用自己的UDP套接口与确定的唯一对端进行通信时,才可以调用connect.” unp 第八章udp编程说明。
[解决办法]
可能是你的缺少对错误的处理,比如,socket函数可能返回错误,因为一般socket是不能重用的,看你给出的程序就没做错误的处理,如果socket1变量得到一个负值,sendto肯定是失败的

热点排行