Próbuje napisac progam, który przesyła jakieś dane najlepiej text.
Napisałem kod, który przedstawiam poniżej...
...chodzi o to że nie moge odebrać textu, którego serwer przesyła do klienta...
serwer:
#include <winsock2.h>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
int main()
{
WSADATA WSD;
SOCKET sock;
printf("Zakladanie gniazda...\n");
WSAStartup( MAKEWORD( 2 , 0 ) , &WSD);
sock = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP );
int opt=4096;
setsockopt( sock, SOL_SOCKET, SO_SNDBUF,
(char*)&opt, sizeof( opt ) );
setsockopt( sock, SOL_SOCKET, SO_RCVBUF,
(char*)&opt, sizeof( opt ) );
bool bopt = true;
setsockopt( sock, SOL_SOCKET, SO_BROADCAST,
(char*)&bopt, sizeof( bopt ) );
setsockopt( sock, SOL_SOCKET, SO_DONTLINGER,
(char*)&bopt, sizeof( bopt ) );
sockaddr_in Addr;
Addr.sin_family = AF_INET; // PF_INET
Addr.sin_port = htons(3000);
Addr.sin_addr.S_un.S_addr = htonl( ADDR_ANY );
// zerujemy resztę struktury
memset( Addr.sin_zero , 0, 8);
bind( sock, (sockaddr*)&Addr, sizeof( sockaddr ) );
Addr.sin_port=htons( 4000 );
Addr.sin_addr.S_un.S_addr = inet_addr("localhost");
while(1)
{
sendto( sock, "Yol Yol!", 9, 0,
(sockaddr*)&Addr, sizeof( sockaddr ) );
printf("%d",WSAGetLastError());
}
getch();
closesocket( sock );
WSACleanup( );
return 0;
}
klient:
#include <winsock2.h>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
int main()
{
WSADATA WSD;
SOCKET sock;
char buf[1024];
int s;
printf("Zakladanie gniazda...\n");
WSAStartup( MAKEWORD( 2 , 0 ) , &WSD);
sock = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP );
if (sock == INVALID_SOCKET)
{
printf("Funkcja socket() zakończona błędem: %d\n",
WSAGetLastError());
return 1;
}
int opt=4096;
setsockopt( sock, SOL_SOCKET, SO_SNDBUF,
(char*)&opt, sizeof( opt ) );
setsockopt( sock, SOL_SOCKET, SO_RCVBUF,
(char*)&opt, sizeof( opt ) );
bool bopt = true;
setsockopt( sock, SOL_SOCKET, SO_BROADCAST,
(char*)&bopt, sizeof( bopt ) );
setsockopt( sock, SOL_SOCKET, SO_DONTLINGER,
(char*)&bopt, sizeof( bopt ) );
sockaddr_in Addr;
Addr.sin_family = AF_INET; // PF_INET
Addr.sin_port = htons(3000);
Addr.sin_addr.S_un.S_addr = htonl( ADDR_ANY );
// zerujemy resztę struktury
memset( Addr.sin_zero , 0, 8);
bind( sock, (sockaddr*)&Addr, sizeof( sockaddr ) );
Addr.sin_port = htons(4000);
Addr.sin_addr.S_un.S_addr = inet_addr("localhost");
s = 1024;
recvfrom( sock, buf, 1024, 0, (sockaddr*)&Addr, &s );
printf("%d\n",WSAGetLastError( ));
printf("%c\n",buf);
getch();
closesocket( sock );
WSACleanup( );
return 0;
}
:|