socket 收发问题
有一个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;
}
}