C语言 socket 问题

我的目的是链接SMTP服务器然后接受smtp.qq.com的“220smtp.qq.comEsmtpQQMailServer”可是错误代码是10047:使用了与请求的协议... 我的目的是链接SMTP服务器然后接受smtp.qq.com的“220 smtp.qq.com Esmtp QQ Mail Server”
可是错误代码是 10047:使用了与请求的协议不兼容的地址。
不知道问题出在哪里,菜鸟刚学习socket不知从何入手
#include <stdio.h>
#include <winsock2.h>
#include <WinSock.h>
#include <string.h>
#pragma comment(lib,"ws2_32.lib")
char buff[256]={0};
void ShowError();
int main(int argc,char argv[])
{
WSADATA wsaData;
SOCKADDR_IN addrs;
WSAStartup(MAKEWORD(2,0),&wsaData);//初始化Socket库
SOCKET link=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);//创建套接字
ShowError();
addrs.sin_addr.S_un.S_addr = inet_addr("120.198.189.122");//ip地址
ShowError();
addrs.sin_port=htons(IPPORT_SMTP);//port端口
ShowError();
connect(link,(sockaddr *)&addrs,sizeof(addrs));
ShowError();
if (connect(link,(sockaddr *)&addrs,sizeof(addrs))==SOCKET_ERROR)
{
int a=0;
printf_s("%d\n",a);
ShowError();
printf_s("no !!!\n");
}
else
{
printf_s("OK");
}
recv(link,buff,256,0);
ShowError();
printf_s("%s",buff);
closesocket(link);
WSACleanup();
getchar();
}
void ShowError()
{
TCHAR * lpMsgBuf={0};
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM, NULL,GetLastError(),
MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),
(LPTSTR)&lpMsgBuf,
0,
NULL);//GetLastError()
MessageBox(NULL,lpMsgBuf,TEXT("why!!!!!"),MB_OK|MB_ICONASTERISK);
}
我的目的是链接SMTP服务器然后接受smtp.qq.com的“220 smtp.qq.com Esmtp QQ Mail Server”
可是错误代码是 10047:使用了与请求的协议不兼容的地址。
不知道问题出在哪里,菜鸟刚学习socket不知从何入手如果知道的请写出完整代码
谢谢!!
展开
 我来答
匿名用户
2013-03-10
展开全部
你的地址类型忘记设置了,加一句 addrs.sin_family=AF_INET;就好了。
另外去掉winsock头文件,这个头文件是旧版本的指向的是socket1.0 没必要再包含一遍了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式