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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2014, 06:29   #1
Winster322
Новичок
Джуниор
 
Регистрация: 19.08.2014
Сообщений: 2
По умолчанию C++, работа с сокетами

Всем привет) Щас на майле посоветовалю сюда зайти, там никто ничего не знает) Недавно начал изучать сокеты в плюсах, столкнулся с такой проблемой что когда отправляю сообщение оно доходит не так как я хотел. Вот код:
Код:
#include <stdio.h>
#include <Windows.h>
#include <winsock.h>

using namespace std;

#pragma comment(lib, "ws2_32.lib")

#define MY_PORT 1998
#define PRINTUSERS if (nclients) printf("%d clients online", nclients); else printf("No online clients");

int nclients = 0;

char mes[] = "Stas";

int main()
{
	setlocale(0,"");
	system("color 2");

	printf("TCP Start Server\n");
	char buff[1024];

	if (WSAStartup(0x0202, (WSADATA *)&buff[0]))
	{
		printf("Error WSAStartup\n");
	}

	SOCKET MySocket = socket(AF_INET, SOCK_STREAM, 0);

	sockaddr_in sock_addr;
	sock_addr.sin_addr.S_un.S_addr = 0;
	sock_addr.sin_family = AF_INET;
	sock_addr.sin_port = htons(MY_PORT);

	bind(MySocket, (sockaddr *)&sock_addr, sizeof(sock_addr));

	listen(MySocket, 0x100);

	printf("Ожидайте подключения...\n");

	SOCKET client_socket;
	sockaddr_in client_addr;
	int client_addr_size = sizeof(client_addr);

	while ((client_socket = accept(MySocket, (sockaddr *)&client_addr, &client_addr_size)) != SOCKET_ERROR)
	{
		nclients++;
		buff[sizeof(mes)];

		
		send(MySocket, mes, sizeof(mes), 0);
		recv(MySocket, buff, sizeof(buff), 0);

		printf(buff);

		HOSTENT *host;
		host = gethostbyaddr((char *)&client_addr.sin_addr.S_un.S_addr, 4, AF_INET);
		printf("+%s [%s] new connect\n",
			(host)?host->h_name:"", inet_ntoa(client_addr.sin_addr));
		PRINTUSERS
	}

	system("pause");
	return 0;
}
Отправляю сообщение Stas, приходят смайлики)) В чем может быть проблема?

Последний раз редактировалось Stilet; 19.08.2014 в 09:48.
Winster322 вне форума Ответить с цитированием
Старый 19.08.2014, 08:58   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Цитата:
Сообщение от Winster322 Посмотреть сообщение
В чем может быть проблема?
В сокете, который вы используете для отправления и получения. При создании сокета указывайте протокол явно.
Перечитайте что делает accept().
Проверяйте коды ошибок.
waleri вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с сокетами Thief_Brother Работа с сетью в Delphi 25 27.02.2012 11:04
Работа с сокетами(портами) groooovefree Софт 1 02.07.2010 09:53
Работа с сокетами zumm Работа с сетью в Delphi 10 28.03.2010 15:30
**Работа с сокетами** Яр|/||< (^_^) Работа с сетью в Delphi 4 11.07.2009 18:10
Работа с сокетами vasilii_terkin Работа с сетью в Delphi 2 13.02.2007 11:08