На самом деле, я хочу создать приложение на C, чтобы 2 человека могли общаться друг с другом. Предположим, что они знают свой IP (на самом деле, я думаю, что делаю ошибку здесь. Я получаю свои IP-адреса от www.whatismyip.com).recvcfrom() и адрес sendto(), который будет использоваться
void recv_data(char *from, unsigned short int Port, char *data, int data_length)
{
WSADATA wsaData;
SOCKET RecvSocket;
sockaddr_in RecvAddr;
char RecvBuf[data_length];
sockaddr_in SenderAddr;
int SenderAddrSize = sizeof (SenderAddr);
WSAStartup(MAKEWORD(2, 2), &wsaData);
RecvSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
RecvAddr.sin_family = AF_INET;
RecvAddr.sin_port = htons(Port);
RecvAddr.sin_addr.s_addr = inet_addr(from);
bind(RecvSocket, (SOCKADDR *) & RecvAddr, sizeof (RecvAddr));
recvfrom(RecvSocket, RecvBuf, data_length, 0, (SOCKADDR *) & SenderAddr, &SenderAddrSize);
int i;
for(i=0;i<=data_length-1;i++)
*(data+i)=RecvBuf[i];
WSACleanup();
}
Вышеуказанная функция предназначена для получения того, что отправляет другой человек. Он отлично работает, когда «127.0.0.1» является значением from
, но когда мой ip (117.193.52.176) используется, появляется что-то еще. Может ли кто-нибудь сказать мне, где я ошибаюсь?
Что вы имеете в виду «появляется что-то еще»? Также проверьте возвращаемые значения всех функций и распечатайте любые ошибки, которые вы получаете (если функция не работает, проверьте «WSAGetLastError»). –
Вы находитесь за любым маршрутизатором/брандмауэром? – Default
Что-то еще означает текст, который я даже не отправил из моего приложения для говорящего ... На самом деле куча сердец, лица в DOS –