c语言 ip地址如何手动输入

qq_33725340 2016-06-15 06:30:19
大神们,请教一下,这是我的代码:
string q;
char ip;
ip=scanf("%s",&q);
sockaddr_in addrSrv;
addrSrv.sin_addr.S_un.S_addr = inet_addr(&ip);
addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(6000);
我想运行客户端的时候,手动输入服务器的ip,但是失败了
WSAGetLastError()是10049。想学习,真心求教各位大神
...全文
801 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxj654321 2017-03-28
  • 打赏
  • 举报
回复
请问 这个问题你是怎么改的呀 error C2664: 'inet_addr' : cannot convert parameter 1 from 'char (*)[32]' to 'const char *'
qq_33725340 2016-06-15
  • 打赏
  • 举报
回复
大神,怎样把分给你啊?是不是用结贴啊
qq_33725340 2016-06-15
  • 打赏
  • 举报
回复
大神,谢谢啊,我经过几次修改,没问题了,我成功了
qq_33725340 2016-06-15
  • 打赏
  • 举报
回复
谢谢你哦,不过有个错误:error C2664: 'inet_addr' : cannot convert parameter 1 from 'char (*)[32]' to 'const char *' inet_addr里面好像是const char* 类型,我改了一下,还是不对
lunat 2016-06-15
  • 打赏
  • 举报
回复
scanf("%31s", &ip);
lunat 2016-06-15
  • 打赏
  • 举报
回复

 string q;   //这是什么鬼?C++里面的std::string?
 char ip;    //char表达不了一个IP地址,不管是v4还是v6
 ip=scanf("%s",&q); // scanf的返回值不是输入的内容(IP地址字符串)!成功读入的项数或EOF
 sockaddr_in addrSrv; 
 addrSrv.sin_addr.S_un.S_addr = inet_addr(&ip); //&ip类型确实是char*,但不是以'\0'结尾的C字符串!!

稍微改下:
 char ip[32] = "";
 struct sockaddr_in addrSrv; 

 if (scanf("%s", &ip) != 1) {
      printf("input error!\n");
 }

 memset(&addrSrv, 0, sizeof(addrSrv));

 addrSrv.sin_family = AF_INET; 
 addrSrv.sin_addr.s_addr = inet_addr(&ip);
 addrSrv.sin_port = htons(6000);    
qq_33725340 2016-06-15
  • 打赏
  • 举报
回复
connect连接服务器时候失败的

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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