Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <math.h>
- #include <conio.h>
- #include <stdio.h>
- #include <string.h>
- #include <winsock2.h>
- #define CLNT_PORT 12505 // определяем порт, с которого наша программа будет посылать сообщения
- #define SRV_PORT 12300 // порт, на котором нас должен услышать сервер
- #define SERVERADDR "127.0.0.1"
- int main(int argc, char* argv[])
- {
- char buff[2*1024+1]; // в этот массив будем принимать сообщения, приходящие от сервера
- printf("UDP Client\n");
- // Шаг 1 - иницилизация библиотеки Winsocks
- if (WSAStartup(0x202,(WSADATA *)&buff[0]))
- {
- printf("WSAStartup error: %d\n",
- WSAGetLastError());
- getch();
- return -1;
- }
- // Шаг 2 - открытие сокета
- SOCKET my_sock=socket(AF_INET, SOCK_DGRAM, 0);
- if (my_sock==INVALID_SOCKET)
- {
- printf("socket() error: %d\n",WSAGetLastError());
- WSACleanup();
- getch();
- return -1;
- }
- // Шаг 3 - обмен сообщений с сервером
- HOSTENT *hst;
- sockaddr_in srv_addr, clnt_addr;
- srv_addr.sin_family=AF_INET;
- srv_addr.sin_port=htons(SRV_PORT);
- clnt_addr.sin_family=AF_INET;
- clnt_addr.sin_addr.s_addr=INADDR_ANY;
- clnt_addr.sin_port=htons(CLNT_PORT);
- // определение IP-адреса узла
- if (inet_addr(SERVERADDR))
- srv_addr.sin_addr.s_addr=inet_addr(SERVERADDR);
- else
- if (hst=gethostbyname(SERVERADDR))
- srv_addr.sin_addr.s_addr=((unsigned long **)
- hst->h_addr_list)[0][0];
- else
- {
- printf("Unknown host: %d\n",WSAGetLastError());
- closesocket(my_sock);
- WSACleanup();
- return -1;
- }
- //bind local port for client
- bind (my_sock, (SOCKADDR*) &clnt_addr, sizeof (clnt_addr));
- // Передача сообщений на сервер
- sendto(my_sock,(char*)"Here's text which send to server" ,strlen("Here's text which send to server"),0,
- (sockaddr *) &srv_addr,sizeof(srv_addr));
- // Прием сообщения с сервера
- sockaddr_in server_addr;
- int server_addr_size=sizeof(server_addr);
- int n=recvfrom(my_sock,&buff[0],sizeof(buff)-1,0,
- (sockaddr *) &server_addr, &server_addr_size);
- if (n==SOCKET_ERROR)
- {
- printf("recvfrom() error:"\
- "%d\n",WSAGetLastError());
- closesocket(my_sock);
- WSACleanup();
- return -1;
- }
- // шаг последний - выход
- closesocket(my_sock);
- WSACleanup();
- getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement