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;
}
}
//收信
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;
}
}
...全文
相关推荐
JAVA socket收发数据,并支持断网自动连接
本话题主要关注如何使用Java Socket实现数据的收发,并在客户端断网或者服务器重启后实现自动重连功能。1.
C++多线程SOCKET收发
在C++编程中,多线程SOCKET收发是一项重要的技术,它允许程序同时处理多个网络连接,提高系统的并发性能。
socket连接,消息收发。拆包。
在EasySocket这样的库或框架中,通常会提供高级的接口,帮助开发者更方便地处理socket连接、消息收发和拆包等问题。
socket 收发包工具
这个“socket收发包工具”很可能是一个帮助开发者测试和调试socket通信的实用程序,它可以简化数据的发送和接收过程,使得网络编程变得更加便捷。
(可视化文件消息一体化收发Socket实现V0.1说明文档
综上所述,"可视化文件消息一体化收发Socket实现V0.1"是一款集多功能于一身的通信工具,通过Socket技术实现了高效、全面的文件和消息收发。


网络及通讯开发
