请教关于bind的问题。。。

夜风似影 夜风似影 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
int main(){
WSADATA wsadata;
if(WSAStartup(MAKEWORD(2, 2,), &wsadata)!=0){
printf("InitWSASartup error!");
return -1;
}

SOCKET rawsock = NULL;
SOCKADDR_IN addrsock;
int settimeout = 500;



if((rawsock=socket(AF_INET, SOCK_RAW, IPPROTO_IP))==INVALID_SOCKET)
{
printf("Socket Setup error!\n");
return -1;
}

addrsock.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addrsock.sin_family = AF_INET;
addrsock.sin_port = htons(10050);

char name[100] ={0};
struct hostent* pHostent;

gethostname(name, 100);
pHostent=gethostbyname(name);

int num=0;
while( pHostent->h_addr_list[num++] != NULL);

num -=1 ;

printf("%s\n",inet_ntoa(*((in_addr*)pHostent->h_addr_list[0])));

addrsock.sin_addr.S_un.S_addr = inet_addr("192.186.168.132");
int ret = bind(rawsock, (SOCKADDR*)&addrsock, sizeof(SOCKADDR));
if(ret==SOCKET_ERROR){
printf("socked bind fail!\n");
printf("%d",GetLastError);
}

setsockopt(rawsock,SOL_SOCKET,SO_RCVTIMEO,(char *)&settimeout,sizeof(int));

DWORD lpvBuffer = 1;
DWORD lpcbBytesReturned = 0;
DWORD lpoBuffer = 1;
WSAOVERLAPPED wsaover;

if(WSAIoctl(rawsock, SIO_RCVALL, &lpvBuffer, sizeof(lpvBuffer), &lpoBuffer, sizeof(lpoBuffer), &lpcbBytesReturned, NULL, NULL)!=SOCKET_ERROR){
printf("set socket model fail!\n");
printf("%d\n",WSAGetLastError());
return -1;
}

//listen(rawsock, 5);

SOCKADDR_IN addrrecv;
int len = sizeof(addrrecv);

while(1){
char recvbuff[200];
ret = recvfrom(rawsock, recvbuff, 200, 0, (SOCKADDR*)&addrrecv, &len);

IPHEADER* pIpheader;
pIpheader = (IPHEADER*)recvbuff;

if (pIpheader->proto==IPPROTO_TCP)
{
char* sourceip=inet_ntoa(addrrecv.sin_addr);
printf("%s\n", sourceip);

TCPHEADER *lpTCPheader=(TCPHEADER*)(recvbuff+sizeof(IPHEADER));

int Port = ntohs(lpTCPheader->th_sport);

printf("%d\n", Port);
}
}
}

想写个抓包程序,为什么我绑定的是INADDR_ANY,bind就可以成功,但是没有抓到包,而绑定的是本地地址192.168.186.132就一直失败,是什么原因,谢谢了!
没分了,只能来非技术区发帖了!汗 !!!
...全文

相关推荐

评论 1
收藏 已收藏
分享
返回顶部
夜风似影
非技术区 15,446 成员 58,111 内容