<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[IRC_Clientprob]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>also ich hab im internet einen simplen irc client gefunden(wollte in benutzen um nicht immer in die rfc zu gucken wenn ich wissen wollte was ein Befehl vom server zurück gibt). Hab ihn kompiliert und gelinkt funkt auch soweit blos wenn ich das Programm starte und alle daten eingegeben habe die es verlangt kommt ein error von Windows und das Programm wird beendet.</p>
<p>Hier mal der Quellcode:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;iostream&gt;
#include &lt;string.h&gt;
#include &lt;winsock.h&gt;
#include &lt;process.h&gt;

#pragma comment(lib, &quot;ws2_32.lib&quot;)

void Zugangsdaten(std::string *zugangsdaten)
{
	char temp[30];

	std::cout&lt;&lt; &quot;Nick: &quot;;
	std::cin.getline(temp, 30, '\n');
	zugangsdaten[0] = temp;
	std::cout&lt;&lt; &quot;Name: &quot;;
	std::cin.getline(temp, 30, '\n');
	zugangsdaten[1] = temp;
	std::cout&lt;&lt; &quot;Server: &quot;;
	std::cin.getline(temp, 30, '\n');
	zugangsdaten[2] = temp;
	std::cout&lt;&lt; &quot;Raum: &quot;;
	std::cin.getline(temp, 30, '\n');
	zugangsdaten[3] = temp;
}

unsigned int VerbindenAnServer(std::string server, int port)
{
	SOCKET sock;
	char serverip[20];
	sockaddr_in addr;
	WSADATA wsaData;

	if(WSAStartup(MAKEWORD(2,0), &amp;wsaData) != 0)
		std::cout&lt;&lt;&quot;WSA konnte nicht initialisiert werden.&quot;;

	hostent *dns = gethostbyname(server.c_str());

	sprintf(serverip, &quot;%u.%u.%u.%u&quot;,
		(unsigned char) dns-&gt;h_addr_list[0][0],	(unsigned char) dns-&gt;h_addr_list[0][1],
		(unsigned char) dns-&gt;h_addr_list[0][2], (unsigned char) dns-&gt;h_addr_list[0][3]);

	addr.sin_family = AF_INET;
	addr.sin_port = htons(port);
	addr.sin_addr.s_addr = inet_addr(serverip);

	sock = socket(AF_INET, SOCK_STREAM, 0);
	if(sock == 0)
		std::cout&lt;&lt;&quot;Socket konnte nicht initialisiert werden&quot;;

	if(connect(sock, (sockaddr *) &amp;addr, sizeof(addr)) == -1)
		std::cout&lt;&lt;&quot;Verbindung konnte nicht hergestellt werden&quot;;

	char temp[10000];
	int x = recv(sock, temp, 10000, 0);
	temp[x] = 0;
	std::cout&lt;&lt; temp;

	return sock;
}

void AnmeldenAnServer(SOCKET sock, std::string *zugangsdaten)
{
	std::string nick = &quot;NICK &quot;;
	std::string user = &quot;USER &quot;;

	nick += zugangsdaten[0];
	nick += &quot;\r\n&quot;;

	user += zugangsdaten[0];
	user += ' ';
	user += &quot;localhost &quot;;
	user += zugangsdaten[2];
	user += ' ';
	user += zugangsdaten[1];
	user += &quot;\r\n&quot;;

	send(sock, nick.c_str(), nick.length(), 0);
	send(sock, user.c_str(), user.length(), 0);

	char temp[10000];
	int x = recv(sock, temp, 10000, 0);
	temp[x] = 0;
	std::cout&lt;&lt; temp;
}

void InRaumGehen(SOCKET sock, std::string *zugangsdaten)
{
	std::string join = &quot;JOIN &quot;;

	join += zugangsdaten[3];
	join += &quot;\r\n&quot;;

	send(sock, join.c_str(), join.length(), 0);

	char temp[10000];
	int x = recv(sock, temp, 10000, 0);
	temp[x] = 0;
	std::cout&lt;&lt; temp;
}

void NachrichtenEmpfangen(void *sock)
{
	char ausgabe[1000];
	int x = 0;

	while(1)
	{
		x = recv((SOCKET)sock, ausgabe, 1000, 0);

		if(x &gt; 0)
		{
			ausgabe[x] = 0;
			std::cout&lt;&lt; ausgabe &lt;&lt; std::endl;
		}
		Sleep(10);
	}
}

void NachrichtenSenden(SOCKET sock)
{
	char temp[1000];
	std::string eingabe;

	while(1)
	{
		std::cin.getline(temp, 100, '\n');
		eingabe = temp;
		eingabe += &quot;\r\n&quot;;

		send(sock, eingabe.c_str(), eingabe.length(), 0);
	}
}

int main()
{
	SOCKET sock;
	std::string zugangsdaten[4];

	Zugangsdaten(zugangsdaten);
	sock = VerbindenAnServer(zugangsdaten[2], 6669);
	AnmeldenAnServer(sock, zugangsdaten);
	InRaumGehen(sock, zugangsdaten);
	CreateThread(NULL, 0, (unsigned long (__stdcall *)(void *))NachrichtenEmpfangen, (void *)sock, 0, NULL);
	NachrichtenSenden(sock);

	std::cin.get();
	WSACleanup();
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/157707/irc_clientprob</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Jul 2026 11:42:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/157707.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 28 Aug 2006 18:46:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to IRC_Clientprob on Mon, 28 Aug 2006 18:46:33 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>also ich hab im internet einen simplen irc client gefunden(wollte in benutzen um nicht immer in die rfc zu gucken wenn ich wissen wollte was ein Befehl vom server zurück gibt). Hab ihn kompiliert und gelinkt funkt auch soweit blos wenn ich das Programm starte und alle daten eingegeben habe die es verlangt kommt ein error von Windows und das Programm wird beendet.</p>
<p>Hier mal der Quellcode:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;iostream&gt;
#include &lt;string.h&gt;
#include &lt;winsock.h&gt;
#include &lt;process.h&gt;

#pragma comment(lib, &quot;ws2_32.lib&quot;)

void Zugangsdaten(std::string *zugangsdaten)
{
	char temp[30];

	std::cout&lt;&lt; &quot;Nick: &quot;;
	std::cin.getline(temp, 30, '\n');
	zugangsdaten[0] = temp;
	std::cout&lt;&lt; &quot;Name: &quot;;
	std::cin.getline(temp, 30, '\n');
	zugangsdaten[1] = temp;
	std::cout&lt;&lt; &quot;Server: &quot;;
	std::cin.getline(temp, 30, '\n');
	zugangsdaten[2] = temp;
	std::cout&lt;&lt; &quot;Raum: &quot;;
	std::cin.getline(temp, 30, '\n');
	zugangsdaten[3] = temp;
}

unsigned int VerbindenAnServer(std::string server, int port)
{
	SOCKET sock;
	char serverip[20];
	sockaddr_in addr;
	WSADATA wsaData;

	if(WSAStartup(MAKEWORD(2,0), &amp;wsaData) != 0)
		std::cout&lt;&lt;&quot;WSA konnte nicht initialisiert werden.&quot;;

	hostent *dns = gethostbyname(server.c_str());

	sprintf(serverip, &quot;%u.%u.%u.%u&quot;,
		(unsigned char) dns-&gt;h_addr_list[0][0],	(unsigned char) dns-&gt;h_addr_list[0][1],
		(unsigned char) dns-&gt;h_addr_list[0][2], (unsigned char) dns-&gt;h_addr_list[0][3]);

	addr.sin_family = AF_INET;
	addr.sin_port = htons(port);
	addr.sin_addr.s_addr = inet_addr(serverip);

	sock = socket(AF_INET, SOCK_STREAM, 0);
	if(sock == 0)
		std::cout&lt;&lt;&quot;Socket konnte nicht initialisiert werden&quot;;

	if(connect(sock, (sockaddr *) &amp;addr, sizeof(addr)) == -1)
		std::cout&lt;&lt;&quot;Verbindung konnte nicht hergestellt werden&quot;;

	char temp[10000];
	int x = recv(sock, temp, 10000, 0);
	temp[x] = 0;
	std::cout&lt;&lt; temp;

	return sock;
}

void AnmeldenAnServer(SOCKET sock, std::string *zugangsdaten)
{
	std::string nick = &quot;NICK &quot;;
	std::string user = &quot;USER &quot;;

	nick += zugangsdaten[0];
	nick += &quot;\r\n&quot;;

	user += zugangsdaten[0];
	user += ' ';
	user += &quot;localhost &quot;;
	user += zugangsdaten[2];
	user += ' ';
	user += zugangsdaten[1];
	user += &quot;\r\n&quot;;

	send(sock, nick.c_str(), nick.length(), 0);
	send(sock, user.c_str(), user.length(), 0);

	char temp[10000];
	int x = recv(sock, temp, 10000, 0);
	temp[x] = 0;
	std::cout&lt;&lt; temp;
}

void InRaumGehen(SOCKET sock, std::string *zugangsdaten)
{
	std::string join = &quot;JOIN &quot;;

	join += zugangsdaten[3];
	join += &quot;\r\n&quot;;

	send(sock, join.c_str(), join.length(), 0);

	char temp[10000];
	int x = recv(sock, temp, 10000, 0);
	temp[x] = 0;
	std::cout&lt;&lt; temp;
}

void NachrichtenEmpfangen(void *sock)
{
	char ausgabe[1000];
	int x = 0;

	while(1)
	{
		x = recv((SOCKET)sock, ausgabe, 1000, 0);

		if(x &gt; 0)
		{
			ausgabe[x] = 0;
			std::cout&lt;&lt; ausgabe &lt;&lt; std::endl;
		}
		Sleep(10);
	}
}

void NachrichtenSenden(SOCKET sock)
{
	char temp[1000];
	std::string eingabe;

	while(1)
	{
		std::cin.getline(temp, 100, '\n');
		eingabe = temp;
		eingabe += &quot;\r\n&quot;;

		send(sock, eingabe.c_str(), eingabe.length(), 0);
	}
}

int main()
{
	SOCKET sock;
	std::string zugangsdaten[4];

	Zugangsdaten(zugangsdaten);
	sock = VerbindenAnServer(zugangsdaten[2], 6669);
	AnmeldenAnServer(sock, zugangsdaten);
	InRaumGehen(sock, zugangsdaten);
	CreateThread(NULL, 0, (unsigned long (__stdcall *)(void *))NachrichtenEmpfangen, (void *)sock, 0, NULL);
	NachrichtenSenden(sock);

	std::cin.get();
	WSACleanup();
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1126382</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1126382</guid><dc:creator><![CDATA[IRC_Client]]></dc:creator><pubDate>Mon, 28 Aug 2006 18:46:33 GMT</pubDate></item><item><title><![CDATA[Reply to IRC_Clientprob on Mon, 28 Aug 2006 18:54:13 GMT]]></title><description><![CDATA[<p>IRC_Client schrieb:</p>
<blockquote>
<p>[...]Hab ihn kompiliert und gelinkt funkt auch soweit blos wenn ich das Programm starte und alle daten eingegeben habe die es verlangt kommt ein error von Windows und das Programm wird beendet.[...]</p>
</blockquote>
<p>Die 'Frage' is jetzt n Scherz oder ?! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> ... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> <a href="http://www.catb.org/~esr/faqs/smart-questions.html" rel="nofollow">Smart Questions</a>.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/8250">@Swordfish</a>: So machst du das doch auch immer <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1126388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1126388</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Mon, 28 Aug 2006 18:54:13 GMT</pubDate></item><item><title><![CDATA[Reply to IRC_Clientprob on Mon, 28 Aug 2006 19:16:23 GMT]]></title><description><![CDATA[<p>ok die kurze frage:<br />
Warum bricht er ab wenn er connected?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1126404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1126404</guid><dc:creator><![CDATA[IRC_Client]]></dc:creator><pubDate>Mon, 28 Aug 2006 19:16:23 GMT</pubDate></item></channel></rss>