'localhost'/ '127.0.0.1'또는 특정 포트 '5000'에 대한 데이터를 보내는 응용 프로그램이 있습니다. 이 포트는 이미 점유되었습니다. 내가 어떤 데이터가 '5000'포트에서 보내 졌는지보고 싶다면. 이것은 이하winsock에서 소켓을 바인딩하지 않고 데이터를받는 방법
난은 클라이언트 애플리케이션을 썼다
INT의 _tmain (INT의 ARGC을 _TCHAR *는 argv []) {
cout<<"\n Hi "<<endl;
WSAData wsd;
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
cout<<"\n WSA Failed : "<<endl;
return 0;
}
SOCKET sock;
int bytesRecv;
char recvBuf[1024]="Hello";
sock=socket(AF_INET,SOCK_DGRAM,0);
if(sock==SOCKET_ERROR)
{
cout<<"\n Socket Creation Failed"<<endl;
return 0;
}
SOCKADDR_IN client;
int clientAddrSize=sizeof(client);
client.sin_family=AF_INET;
client.sin_addr.s_addr=inet_addr("127.0.0.1");
client.sin_port=htons(5000);
if(connect(sock,(SOCKADDR *)&client,sizeof(client))==SOCKET_ERROR)
{
cout<<"\n Connection Failed "<<endl;
wprintf(L"Connection Failed %d",WSAGetLastError());
}
else
{
cout<<"\n Connection Established "<<endl;
}
while(sock!=SOCKET_ERROR)
{
//memset(recvBuf,'\0',1024);
bytesRecv=recvfrom(sock,recvBuf,50,0,(SOCKADDR *)&client,&clientAddrSize);
if (bytesRecv == SOCKET_ERROR)
{
wprintf(L"sendto failed with error: %d\n", WSAGetLastError());
closesocket(sock);
WSACleanup();
return 1;
//while(1);
}
puts(recvBuf);
cout<<"\n "<<bytesRecv<<endl;
cout<<"\n Sent Buffer : "<<recvBuf<<endl;
while(1);
}
system("pause");
return 0;
}
가 '까지 잘 작동 bytesRecv = recvfrom (sock, recvBuf, 50,0, (SOCKADDR *) & 클라이언트, & clientAddrSize); '. WSAGetLastError를 던지거나받은 바이트 수를 제공하지 않습니다. 가능한 원인은 무엇 일 수 있습니다. 이 프로그램을 작동시키고 5000 포트에서 내 localhost로 전송 된 데이터를 보는 방법.
서버가 해당 위치에서 데이터를 보내는 것과 동일한 위치에서 데이터를 수신하도록 내 클라이언트 프로그램을 만들 수있는 방법.
Wireshark가 어떻게 데이터를 가져 와서 우리에게 보여줄 것입니까? 나는 그 데이터에 접근하여 그 데이터를 다른 애플리케이션에 사용하고 싶다. – Srinivas