奇怪的问题,运行下列程序后,sendto返回-1,调用WSAGetLastError后,返回WSAEAFNOSUPPORT.不懂这个错误的意思,请问大虾到底问题出在那里?谢谢 struct hostent *phe;
struct sockaddr_in sin;
SOCKET sock; memset(&sin,0,sizeof(sin));
sin.sin_family=AF_INET;
sin.sin_port=40800;
if (phe=gethostbyname("127.0.0.1"))
memcpy(&sin.sin_addr,phe->h_addr,phe->h_length);
else if ((sin.sin_addr.s_addr=inet_addr("127.0.0.1"))==INADDR_NONE)
NewException("Failed to get host entry.",CXEXP_NET);
if ((sock=socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP))==INVALID_SOCKET)
NewException("Failed to create socket.",CXEXP_NET);
if (connect(sock,(sockaddr*)&sin,sizeof(sin))<0)
NewException("Failed to connect.",CXEXP_NET); int r;
DWORD data;
r=sendto(sock,(char*)&data,sizeof(data),0,(sockaddr*)&sin.sin_addr,sizeof(sockaddr_in));
r=WSAGetLastError();
struct sockaddr_in sin;
SOCKET sock; memset(&sin,0,sizeof(sin));
sin.sin_family=AF_INET;
sin.sin_port=40800;
if (phe=gethostbyname("127.0.0.1"))
memcpy(&sin.sin_addr,phe->h_addr,phe->h_length);
else if ((sin.sin_addr.s_addr=inet_addr("127.0.0.1"))==INADDR_NONE)
NewException("Failed to get host entry.",CXEXP_NET);
if ((sock=socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP))==INVALID_SOCKET)
NewException("Failed to create socket.",CXEXP_NET);
if (connect(sock,(sockaddr*)&sin,sizeof(sin))<0)
NewException("Failed to connect.",CXEXP_NET); int r;
DWORD data;
r=sendto(sock,(char*)&data,sizeof(data),0,(sockaddr*)&sin.sin_addr,sizeof(sockaddr_in));
r=WSAGetLastError();
解决方案 »
- CUsers::GetData”: 函数不接受 0 个参数
- 如何获得网上邻居属性中对网卡的描述?
- 头一回写OCX,遇到的一些问题,请大家帮忙给看看。
- ActiveX和COM有什么区别?请各位高手给一些COM和ActiveX学习的网址,感激不尽啊
- 我写了个只在托盘运行的CD播放程序,如何简单的实现键盘控制。是不是非要用键盘钩子。
- 一个很怪的问题:用MFC向导生成的带工具栏的程序(非IE样式),为何工具栏的手柄区(就是最左边那条线)是白色的呢而非正常的灰色呢,看起来是没
- 关于rebar的奇怪问题????
- ☆☆☆☆☆☆一个问题☆☆☆☆☆☆☆
- 这个问题困扰了我很长时间,保证给分
- 请高手帮忙FSK解调的问题!!!
- 救命,,如何取得文件名啊...(高分,解决问题的将送100分以上)
- 现在有现成的发送邮件的类吗?我自己修改了一个!
你看看:sin.sin_family=AF_INET;
而socket(PF_INET,应该都设成AF_INET
为sin.sin_port = htons(40800)
struct sockaddr_in client_addr;
if ((socket_handle = socket(PF_INET, SOCK_DGRAM)) < 0)
{
/* error handler */
}
memset((char *) &client_addr, 0, sizeof(client_addr));
client_addr.sin_family = PF_INET;
client_addr.sin_addr.s_addr = htonl(INADDR_ANY);
client_addr.sin_port = htons(0); /* let the OS select */
if (bind(socket_handle, (struct sockaddr *)&client_addr,sizeof(client_addr) < 0) {
/* error handler */
}
为sin.sin_port = htons(40800)
sin.sin_port=40800实际绑定的端口是24735,原因见楼上 lichungen(阿根) 所言memcpy(&sin.sin_addr,phe->h_addr,phe->h_length);这一句话在做什么?
socket();bind();sendto();
不能connect