调用socket send()返回失败是咋回事
调用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失败的情况?多谢各位大侠!
[解决办法]
[解决办法]udp套接口也可以有connect函数的, 是解决当目的主机不可达的时候内核通知进程的问题,例如icmp消息
[解决办法]用了connect为udp套接口指定了宿主机的ip地址端口号,
就可以直接用fread fwrite了
至于connect失败, “UDP客户进程或服务器进程仅仅在使用自己的UDP套接口与确定的唯一对端进行通信时,才可以调用connect.” unp 第八章udp编程说明。
[解决办法]可能是你的缺少对错误的处理,比如,socket函数可能返回错误,因为一般socket是不能重用的,看你给出的程序就没做错误的处理,如果socket1变量得到一个负值,sendto肯定是失败的