为什么sockfd=socket(AF_INET,SOCK_STREAM,0)总返回-1?

zl_2001 2003-04-04 10:32:42
采用VC编译,链接库Ws2_32.lib.

改为SOCK_DGRAM也不对!
...全文
1316 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wbcp2000 2003-04-09
  • 打赏
  • 举报
回复
改成
sockfd = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)

另外,在调用之前,初始化socket
WSADATA wsd;
int err;
err = WSAStartup(MAKEWORD(2,2),&wsd);
wbcp2000 2003-04-09
  • 打赏
  • 举报
回复
你可以调用WSAGetLastError看看报什么错误
在进行调试
zl_2001 2003-04-07
  • 打赏
  • 举报
回复
zl_2001 2003-04-04
  • 打赏
  • 举报
回复
yes, you are right.

那再问一下:
我调了WSAStartup之后,发现sendto和recvfrom都返回错,您再看看。

memset((char*)&serv,0,sizeof(serv));
serv.sin_family=AF_INET;
serv.sin_addr.s_addr=inet_addr("192.168.1.63");
serv.sin_port=htons(21);

if(sendto(sockfd,buff,BUFFSIZE,0,(struct sockaddr *)&serv,sizeof(serv))!=BUFFSIZE)
printf("sendto error\n");

if((n=recvfrom(sockfd,buff,BUFFSIZE,0,(struct sockaddr *)NULL,(int *)NULL))<2)
printf("recvfrom error\n");

buff[n-2]=0;
printf("%s\n",buff);
smartcard 2003-04-04
  • 打赏
  • 举报
回复
用getLastError函数看看什么错,估计99%是因为你没有先调用WSAStartup函数。
记得给我分!!

4,387

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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