Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Сетевое программирование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 19.11.2015, 23:44   #1
yakimechik
Пользователь
 
Регистрация: 28.01.2015
Сообщений: 10
По умолчанию Передача координат используя socket UDP

Здравствуйте! Есть задание: выводить на сервере координаты левого верхнего угла клиента при его перемещении с помощью механизма socket udp. Написал две программы, клиент определяет координаты и передает строку, которая их содержит, но сервер почему-то не принимает новые значения, а выводит самое первое значение.
Код сервера:
Код:
// Server.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#include "iostream"
#include <WinSock2.h>
#include <stdio.h>
#include <conio.h>
#pragma comment (lib, "Ws2_32.lib")

using namespace std;

int __cdecl main(void){

	SetConsoleOutputCP(1251);
	SetConsoleTitleA("Server");

	WSADATA wsaData;
	SOCKET servSock;  // сокет
	sockaddr_in ServerAddr, ClientAddr;  //адрес сервера и клиентов
	int retVal, maxlen = 512, ClientAddrSize = sizeof(ClientAddr);
	char* recvbuf = new char[maxlen];  // буфер приема
												
	WSAStartup(MAKEWORD(2, 2), &wsaData);

	// Создание сокета
	servSock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);

	ServerAddr.sin_family = AF_INET;
	ServerAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
	ServerAddr.sin_port = htons(11111);
	retVal = bind(servSock, (sockaddr *)&ServerAddr, sizeof(ServerAddr));
	if (retVal == SOCKET_ERROR) {
		cout << "Невозможно привязать адрес к сокету!" << endl;
		system("pause");
		closesocket(servSock);
		WSACleanup();
		return EXIT_FAILURE;
	}//if

	while (true){
		system("cls");
		strcpy_s(recvbuf, 1, "");
		// Получение информации
		retVal = recvfrom(servSock, recvbuf, maxlen, 0, (sockaddr *)&ClientAddr, &ClientAddrSize);
		if (retVal > 0) {
			printf("Координаты клиентского окна: %s\n", recvbuf);
		}//if
		else {
			cout << "Ошибка при получении!" << endl;
			system("pause");
			closesocket(servSock);
			WSACleanup();
			return EXIT_FAILURE;
		}//else
		Sleep(10);
	}//while
	delete recvbuf;
	return 0;
}//main
Код клиента:
Код:
// Client.cpp: определяет точку входа для консольного приложения.
//


#include "stdafx.h"
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#include "iostream"
#include <WinSock2.h>
#include <stdio.h>
#include <conio.h>
#pragma comment (lib, "Ws2_32.lib")

using namespace std;

int __cdecl main(void) {
	SetConsoleOutputCP(1251);
	SetConsoleTitleA("Client");

	WSADATA wsaData;
	SOCKET clientSock;
	sockaddr_in ServerAddr;  //адрес сервера
	int retVal, maxlen = 512;
	char* query = new char[maxlen];  // буфер отправки
	char X[65];
	char Y[65];
	static RECT rect;

	cout << "Подключение успешно! Передача данных..." << endl;


	WSAStartup(MAKEWORD(2, 2), &wsaData);

	clientSock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);

	ServerAddr.sin_family = AF_INET;
	ServerAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
	ServerAddr.sin_port = htons(11111);

	while (true) {
		strcpy_s(query, 4, "X: ");
		GetWindowRect(GetConsoleWindow(), &rect);
		_ltoa((long)rect.left, X, 10);
		_ltoa((long)rect.top, Y, 10);
		strcat(query, X);
		strcat(query, " Y: ");
		strcat(query, Y);

		retVal = sendto(clientSock, query, strlen(query), 0, (sockaddr *)&ServerAddr, sizeof(ServerAddr));
		if (retVal == SOCKET_ERROR) {
			cout << "Ошибка при отправке!" << endl;
			system("pause");
			closesocket(clientSock);
			WSACleanup();
			return EXIT_FAILURE;
		}//if
		strcpy_s(query, 1, "");
	}//while
	closesocket(clientSock);
	system("pause");
	return 0;
}//main

Последний раз редактировалось yakimechik; 20.11.2015 в 00:21.
yakimechik вне форума
Старый 20.11.2015, 09:48   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
while (true) {
И даже без задержки? О_о Смелый парень...
Цитата:
strcpy_s(recvbuf, 1, "");
А это чего такое? Типа занулить строку?
Я бы через memset() уж делал.

А теперь по теме: Сниффером проверял что отправляется?
I'm learning to live...
Stilet вне форума
Старый 23.11.2015, 12:00   #3
Роман007
Новичок
Джуниор
 
Регистрация: 23.11.2015
Сообщений: 2
По умолчанию

Добрый день помогите с кодом iClose&&iOpen- необъявленный идентификатор
iOpen&&iClose - необъявленный идентификатор
void OnTick()
{
//---
double Dmax,Dmin; bool trade = true;
static datetime BarT=1; //введем эти переменные,
static datetime nt=0;
datetime TempT; // чтобы вычисления проводились 1 раз за указанный таймфрейм а не в каждом тике
int total=OrdersTotal();

if(holdHourStart!=holdHourEnd){
if(holdHourStart<holdHourEnd && (Hour()<holdHourStart || Hour()>holdHourEnd)){
trade=false;
}
if(holdHourStart>holdHourEnd && (Hour()<holdHourStart && Hour()>holdHourEnd)){
trade=false;
}
}

if(NaOtkrytieSvechi){ if (Time[0]==nt){ return; } }
nt=Time[0];


double Dopen1 = iOpen(NULL,TimeFr,1);
double Dclose1 = iClose(NULL,TimeFr,1);
double Dopen2 =iClose&&iOpen(NULL,TimeFr,2);
double Dclose2 =iOpen&&iClose(NULL,TimeFr,2);

Последний раз редактировалось Роман007; 23.11.2015 в 12:03.
Роман007 вне форума
Старый 23.11.2015, 12:12   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Роман007, чего в чужую тему со своим вопросом? И не первый раз. Свою тему создавай
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Socket, TCP, UDP eugenerock Общие вопросы Delphi 3 14.06.2015 11:37
Udp Socket. Возможно ли отправить сообщение от чужого ip-адреса? Denutrror Работа с сетью в Delphi 6 19.06.2011 21:34
Передача потока по UDP. Clos Работа с сетью в Delphi 7 21.06.2010 16:37
UDP & Socket Shouldercannon Работа с сетью в Delphi 14 13.10.2008 17:23
Передача файлов по UDP GAGARIN-NEW Работа с сетью в Delphi 3 15.11.2007 22:45