socket 收发问题

glassegg glassegg 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
有一个socket收信,然后再给其他端口发信,可以实现吧?我写了程序,可是受到数据后,送信总是返回-1,不知道为什么,大家帮忙看看。
//收信
SOCKET sock;
WSADATA wsaData;
SOCKADDR_IN sockaddr;

WORD wVersionRequested;

int result;
wVersionRequested = MAKEWORD(2,0);

if((result = WSAStartup(wVersionRequested,&wsaData))!=0)
{
Application->MessageBoxA("Socket Initial Error","Error",MB_OK);
WSACleanup();
return;
}

memset(&sockaddr,0,sizeof(sockaddr));
sockaddr.sin_port=htons(5000);
sockaddr.sin_family=AF_INET;
sockaddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);

sock = socket(AF_INET,SOCK_DGRAM,0);
if(sock == INVALID_SOCKET)
{
Application->MessageBoxA("Socket Open Error","Error",MB_OK);
WSACleanup();
return;
}
//socket邦定5000断口
result = bind(sock,(LPSOCKADDR)&sockaddr,sizeof(sockaddr));
if(result == SOCKET_ERROR)
{
Application->MessageBoxA("Bind Error","Error",MB_OK);
WSACleanup();
return;
}
result = recvfrom(sock,rbuf,SNDRCVDATALEN,0,NULL,NULL);
if(result == SOCKET_ERROR)
{
Application->MessageBoxA("Error","Error",MB_OK);
WSACleanup();
return;
}

int portnumber=5;
long cport[10] =
{40001,40002,40003,40004,40005};
//送信
SOCKADDR_IN sockaddr1;
for(int i=1; i <= portnumber; i++)
{
memset(&sockaddr1,0,sizeof(sockaddr1));
sockaddr1.sin_port=htons(cport[i-1]);
sockaddr1.sin_family=AF_INET;
sockaddr1.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
int re=sendto(sock , rbuf , strlen(rbuf),0,(struct sockaddr FAR *) &sockaddr1 ,sizeof(sockaddr1));
if(re==SOCKET_ERROR)
{
break;
}
}
...全文

相关推荐

评论 13
收藏 已收藏
分享
返回顶部
glassegg
网络及通讯开发 1,317 成员 8,874 内容