13 / 13 / 1
Регистрация: 14.12.2010
Сообщений: 316
|
|
1 | |
Клиент сервер(Sokets UDP) на разных языках18.11.2011, 21:50. Показов 3194. Ответов 2
Метки нет (Все метки)
Возможно ли сделать сервер на Delphi а клиент на С++ ???
Вот мой код сервера(Delphi) и клиента (С++). Почему у меня не работает? не подскажите профессионалы?))) Код
[DELPHI]program Server1; {$APPTYPE CONSOLE} uses Winsock2, Windows, SysUtils; var ServerState:string[32]; // статус сервера ServerIp :AnsiString; // 256 ип клиента ServerReadCommand:AnsiString; // 512 int:integer; // для сокетов sock_adress_size:integer; // размер для сокетов buff:array[0..7] of char; inf: TWSADATA; socks: integer; sockaddr: TSockAddr; begin try Writeln('Connecting...'); WSAStartup(MAKEWORD(2,0),inf); socks:=socket(AF_INET,SOCK_DGRAM,0); sockaddr.sin_family := AF_INET; sockaddr.sin_port := htons(5001); sockaddr.sin_addr.S_addr := htonl(INADDR_ANY); bind(socks,@sockaddr,16); listen(socks,3); { TODO -oUser -cConsole Main : Insert code here } while true do begin // socks:=accept(socks,sockaddr,i); int:=recvfrom(socks,buff,sizeof(buff),0,sockaddr, sock_adress_size); Sleep(250); Writeln(buff); end; readln; except on E:Exception do begin closesocket(0); WSACleanup(); Sleep(500); readln; end; end; end.[/DELPHI] Код клиента (С++) //----------------------------------------------------- Код
[CPP]// пример простого UDP-клиента #include <stdio.h> #include <string.h> #include <winsock2.h> #include <windows.h> #define PORT 5001 #define SERVERADDR "127.0.0.1" int main(int argc, char* argv[]) { char buff[10*1014]; char buff2[7]="777.07"; printf("UDP DEMO Client\nType quit to quit\n"); // Шаг 1 - иницилизация библиотеки Winsocks if (WSAStartup(0x202,(WSADATA *)&buff[0])) { printf("WSAStartup error: %d\n", WSAGetLastError()); return -1; } // Шаг 2 - открытие сокета SOCKET my_sock=socket(AF_INET, SOCK_DGRAM, 0); if (my_sock==INVALID_SOCKET) { printf("socket() error: %d\n",WSAGetLastError()); WSACleanup(); return -1; } // Шаг 3 - обмен сообщений с сервером HOSTENT *hst; sockaddr_in dest_addr; dest_addr.sin_family=AF_INET; dest_addr.sin_port=htons(PORT); // определение IP-адреса узла if (inet_addr(SERVERADDR)) dest_addr.sin_addr.s_addr=inet_addr(SERVERADDR); else if (hst=gethostbyname(SERVERADDR)) dest_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; } while(1) { // чтение сообщения с клавиатуры if (!strcmp(&buff[0],"quit\n")) break; fgets(&buff2[7],sizeof(buff)-1, stdin); printf("count=>%s",&buff2[7]); // Передача сообщений на сервер sendto(my_sock,&buff2[7],strlen(&buff2[7]),0, (sockaddr *) &dest_addr,sizeof(dest_addr)); // Прием сообщения с сервера sockaddr_in server_addr; int server_addr_size=sizeof(server_addr); int n=recvfrom(my_sock,&buff[6],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; } buff[n]=0; // Вывод принятого с сервера сообщения на экран } // шаг последний - выход closesocket(my_sock); WSACleanup(); return 0; } [/CPP]
0
|
18.11.2011, 21:50 | |
Ответы с готовыми решениями:
2
UDP Клиент Сервер UDP клиент сервер Клиент-Сервер отправка сообщений по udp Сервер принимает пакеты если клиент указывает неверный порт получателя UDP. |
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
18.11.2011, 22:36 | 2 |
Можно даже на разных архитектурах
0
|
13 / 13 / 1
Регистрация: 14.12.2010
Сообщений: 316
|
|
19.11.2011, 07:54 [ТС] | 3 |
А не подскажите почему у меня тогда не работает?Примерно такой же клиент работал с сервером написанным на c++ а эти приложения ОБА выходят в сеть сервер на порту 5001 НО НЕ ВИДЯТ ДРУГА как и должен а клиент почем-то на другом хотя стоит в коде тоже 5001.Помогите пожалуйста.
0
|
19.11.2011, 07:54 | |
19.11.2011, 07:54 | |
Помогаю со студенческими работами здесь
3
Нужен ли хостинг или что то еще, для работы программ клиент-сервер(TCP/IP) на разных компьютерах? UDP Клиент-Сервер UDP Клиент-Сервер Клиент-Сервер на UDP. Работающий Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |