powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Socket
2 сообщений из 2, страница 1 из 1
Socket
    #33126209
Alex12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gospoda u menya ogromnaya problema
Est failik

#include <stdio.h> /* Aufgabenstellung clientSys.c - Win32 Konsole Version - connectionless */
#include <string.h>
#include <errno.h>
/* #include <netdb.h>*/
#include "..\data.h"
#include "..\error.c"

#include <winsock2.h>

static struct answer answ;
extern int errno;

/***********************************/
/*** Definiere Portnummer "2000" ***/
/***********************************/


/************************************************/
/*** Deklariere Socketdeskriptor "s" statisch ***/
/************************************************/

s = socket (af, type, protocol)


/******************************************************/
/*** Deklariere die Socketadresse "remote" statisch ***/
/******************************************************/


void test(int retval,char *text)
{
if (retval < 0) {
perror(text);
exit(1);
};
}; /* test */

void initClient(char *name)
{
struct hostent *hostptr;


WSADATA wsaData;
WORD wVersionRequested;
wVersionRequested = MAKEWORD(2,1);
if( WSAStartup( wVersionRequested,&wsaData ) == SOCKET_ERROR ){
printf("CLIENT: WSAStartup() failed!\n");
printf(" error code: %d\n",WSAGetLastError());
exit(-1);
}

/* Create an endpoint for communication */

/***************************************/
/*** Initialisiere die Adressfamilie ***/
/***************************************/


/************************************/
/*** Initialisiere die Portnummer ***/
/************************************/


/* Initialisieren der Adresse */

if (name != 0 ) {

/* Es wurde ein Name eingegeben */

/*****************************************************/
/*** Ueberpruefe ob der Name einer Internetadresse ***/
/*** zugeordnet werden kann ***/
/*****************************************************/


{
if ( (hostptr = gethostbyname(name)) != 0) {

/* Hostname gefunden */

/********************************************************/
/*** Initialisiere mit den Namen des entfernten Hosts ***/
/********************************************************/


}
else {

/* Hostname nicht gefunden */

printf ("Error: Illegal name \n");
exit(-1);
};
};
}
else {

/* Es wurde kein Name eingegeben -> lokale Socketverbindung */

/**************************************************/
/*** Kennzeichne die Socketverbindung als lokal ***/
/**************************************************/


};


}; /* initClient */

struct answer *DoRequest(struct request *req) {

int timeout;
int retlen;
int recvcc;
int fromlen;

/* Send a message from a socket */

/**********************************************************/
/*** Erzeuge Socket mit Internet-Adressformat, ***/
/*** verbindungsloser Dienst und mit Internet-Protokoll ***/
/**********************************************************/


/**********************************************/
/*** Schreibe in das Socket die Anfrage req ***/
/**********************************************/


/* Receive a message from a socket */

while (1)
{

/****************************************************************/
/*** Lese die Antwort vom Socket und speichere sie in answ ab ***/
/****************************************************************/


{
printf ("error recvfrom");
return(0);
};
break;
}

/* Delete a descriptor */

/************************/
/*** Schliesse Socket ***/
/************************/


return(&answ);
};

void closeClient(){

if (WSACleanup()==SOCKET_ERROR){
printf("CLIENT: WSACleanup() failed!\n");
printf(" error code: %d\n",WSAGetLastError());
exit(-1);
}
}

Kak tuda dobavit soket dlya ustanovleniya soedineniya
...
Рейтинг: 0 / 0
Socket
    #33126447
Фотография Землекоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немецкий я не понимаю. Вот пример функции для установления соединения, который можно добавить к программе, вызвав из initClient.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
int MyConnect(char *host, int nPort)
	{
	char *ipaddress;
	struct sockaddr_in peer_addr;
	struct hostent *hp;

	s = socket (AF_INET, SOCK_STREAM,  0 );
	if (s == INVALID_SOCKET) 
		{
		return - 1 ;
		}


	hp = gethostbyname(host);
             if(hp == NULL)
		{
		unsigned long addr=inet_addr(host);
		if(addr == - 1 ) return - 3 ;
		hp = gethostbyaddr((char *)&addr, 4 ,AF_INET);
		if(hp==NULL) return - 4 ;
		}

	memcpy((char *)&(peer_addr.sin_addr), hp->h_addr, hp->h_length);
	peer_addr.sin_port = htons(nPort);
	peer_addr.sin_family = AF_INET;

	if (connect(s,(struct sockaddr *)&peer_addr,sizeof(struct sockaddr_in)) !=  0 ) 
		{
		closesocket( s );
		return - 2 ;
		}

	ipaddress = inet_ntoa(peer_addr.sin_addr);

	printf("connected to %s.%d ", ipaddress, nPort);

	return  0 ;
	}

пример вызова

Код: plaintext
MyConnect("www.sql.ru",  80 );
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Socket
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]