永发信息网

sendto总返回-1

答案:2  悬赏:50  手机版
解决时间 2021-02-04 12:48
  • 提问者网友:佞臣
  • 2021-02-03 18:11
麻烦各位看看下面的代码
这是客户端
#include "cs.h"

int main(int argc,char **argv)
{
int sockfd;
struct sockaddr_in servaddr;
int n;
char passwd[PWD_MAX_LEN];
int len;

if(argc != 3){
printf("usage: cli \n");
return -1;
}

bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(SERV_PORT);
inet_pton(AF_INET,argv[1],&servaddr.sin_addr);

sockfd = socket(AF_INET,SOCK_DGRAM,0);

bzero(passwd,PWD_MAX_LEN);
strcpy(passwd,argv[2]);
printf("%s\n",passwd);
n = sendto(sockfd,(void *)passwd,PWD_MAX_LEN,0,(struct sockaddr*)&servaddr,len);
printf("%d\n",n);

return 0;
}

这是服务器
#include "cs.h"

int main()
{
int sockfd;
struct sockaddr_in servaddr,cliaddr;
int n;
int len;
char passwd[PWD_MAX_LEN];

sockfd = socket(AF_INET,SOCK_DGRAM,0);
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(SERV_PORT);

bind(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr));

n = recvfrom(sockfd,passwd,PWD_MAX_LEN,0,(struct sockaddr*)&cliaddr,&len);
printf("%s\n",passwd);

return 0;
}

回复cpp_wazi
命令netstat|grep 端口号,返回空行。我用测试成功的tcp服务器,并且有客户端连接之后也查不到自己建立的服务器啊。是我查看方法有问题吗?

我找到错误了,len没赋值,真是愁死我了~~
分就不给了啊

“出于保护回答者利益的考虑,直接结束提问,提问的悬赏分将无法返还,请您理解。”
分还是给你吧
最佳答案
  • 五星知识达人网友:污到你湿
  • 2021-02-03 18:20
sendto是-1代表失败

udp连接你看看网络状态netstat
是否有服务器等待连接
全部回答
  • 1楼网友:猎心人
  • 2021-02-03 19:26
1、检查客户端和服务端的端口号是否一致; 2、接收端的socket要采用block模式,数据收到后打印出来.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯