<?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[Socket::Connect - error Interupetd System Call]]></title><description><![CDATA[<p>Hallo Liebe Community.</p>
<p>Ich habe ein kleines(Großes?) Problem bei einem Programm das ich schreibe.<br />
Dabei geht es um die programmierung einer Client Anwendung.<br />
Bei dem Aufruf der Connect Methode Kommt es immer zu einem Fehler (Interupt system call)<br />
Die .cpp</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

#include &quot;socketx.h&quot;
#define MODBUS 502

socketx::socketx(){

};

int socketx::init(string ip){

	sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
	if (sock &lt; 0) //Socket konnte nicht erstellt werden
	{
		throw SockExcept(&quot;[socket:TCP_create] Fehler beim Anlegen eines Sockets&quot;,1001);
	}

	//bzero((char *) &amp;server_addr, sizeof(server_addr));
	server_addr.sin_family			 =	AF_INET;
	server_addr.sin_port			 =	htons(MODBUS); // MODBUS standard port
	server_addr.sin_addr.s_addr		 =	inet_addr(ip.c_str());// ip in unsigned long int umwandeln

	//memset((char*)&amp;server_addr.sin_addr,&amp;ip,sizeof(ip));
	//bcopy((char *)ip_adrs-&gt;h_addr,(char *)&amp;server_addr.sin_addr.s_addr,ip_adrs-&gt;h_length);
	//SockRValue = ; // Socket verbinden
	int err = 0;

		err = connect(sock, (struct sockaddr *)&amp;server_addr, sizeof(server_addr));

	if (err &lt; 0)
	{	 //Socket konnte nicht verbunden werden
		cout&lt;&lt;&quot;error: &quot;&lt;&lt; strerror(sock) &lt;&lt;endl;

		throw SockExcept(&quot;[socket:connect] Fehler beim aufbauen einer verbindung&quot;,1010);
	}

	return 0;
};

int socketx::TCP_send(char* obuf, int byteCount){//gibt anzah lder gesendeten bytes zurück

	sockRValue = send(sock, obuf, byteCount, 0);

	if (sockRValue == -1)
	{
		throw SockExcept(&quot;[socket:TCP_send] Fehler beim Senden der Daten&quot;,1011);
	}

	return sockRValue;
};

int socketx::TCP_recv(unsigned char* ibuf ,int byteCount){//gibt anzah lder empfangenne bytes zurück

	sockRValue = recv(sock, ibuf, byteCount, 0); // gibt die Anzahl der empfangenen Bytes aus

	if (sockRValue == -1){
		throw SockExcept(&quot;[socket:TCP_recv] Fehler beim empfangen der Daten&quot;, 1012);
	}

	return sockRValue;
};

/*---- Die header Datei -----------*/
using namespace std;

class socketx{

public:

	socketx();	// Konstruktor
	int init(string ipAdress);
	int TCP_send(char* obuf, int byteCount);
	int TCP_recv(unsigned char* ibuf, int byteCount);

private:

	int sock;				//id des sockets
	int error;				// Vaiabel um error auf zu nehmen
	int sockRValue;
	struct hostent *ip_adrs;
	struct sockaddr_in server_addr;
	const char *adresse;
	unsigned long ip;

};

class SockExcept{
	private:
		string except;
		int eno;

	public:

		SockExcept(string s, int eno) : except(s) {this-&gt;eno= eno;}
		~SockExcept(){}
		string get_SockExcept(int &amp;eno) {eno=this-&gt;eno; return except;}
};
</code></pre>
<p>Nun meine Frage:<br />
gibt es hier offensichtliche Fehler die einen solchen error verursachen können?<br />
und wie kann mann sowas vernmeiden? Liegt es evtl Daran das der server nach einen geschetiterten bzw. abgebrochenen Verbindung für eine geraume zeit kein weiteren verbindungen über diesen port zu lässt?</p>
<p>Mfg BabCom</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/317417/socket-connect-error-interupetd-system-call</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Jul 2026 22:03:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/317417.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 07 Jun 2013 16:30:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Socket::Connect - error Interupetd System Call on Fri, 07 Jun 2013 16:30:34 GMT]]></title><description><![CDATA[<p>Hallo Liebe Community.</p>
<p>Ich habe ein kleines(Großes?) Problem bei einem Programm das ich schreibe.<br />
Dabei geht es um die programmierung einer Client Anwendung.<br />
Bei dem Aufruf der Connect Methode Kommt es immer zu einem Fehler (Interupt system call)<br />
Die .cpp</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

#include &quot;socketx.h&quot;
#define MODBUS 502

socketx::socketx(){

};

int socketx::init(string ip){

	sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
	if (sock &lt; 0) //Socket konnte nicht erstellt werden
	{
		throw SockExcept(&quot;[socket:TCP_create] Fehler beim Anlegen eines Sockets&quot;,1001);
	}

	//bzero((char *) &amp;server_addr, sizeof(server_addr));
	server_addr.sin_family			 =	AF_INET;
	server_addr.sin_port			 =	htons(MODBUS); // MODBUS standard port
	server_addr.sin_addr.s_addr		 =	inet_addr(ip.c_str());// ip in unsigned long int umwandeln

	//memset((char*)&amp;server_addr.sin_addr,&amp;ip,sizeof(ip));
	//bcopy((char *)ip_adrs-&gt;h_addr,(char *)&amp;server_addr.sin_addr.s_addr,ip_adrs-&gt;h_length);
	//SockRValue = ; // Socket verbinden
	int err = 0;

		err = connect(sock, (struct sockaddr *)&amp;server_addr, sizeof(server_addr));

	if (err &lt; 0)
	{	 //Socket konnte nicht verbunden werden
		cout&lt;&lt;&quot;error: &quot;&lt;&lt; strerror(sock) &lt;&lt;endl;

		throw SockExcept(&quot;[socket:connect] Fehler beim aufbauen einer verbindung&quot;,1010);
	}

	return 0;
};

int socketx::TCP_send(char* obuf, int byteCount){//gibt anzah lder gesendeten bytes zurück

	sockRValue = send(sock, obuf, byteCount, 0);

	if (sockRValue == -1)
	{
		throw SockExcept(&quot;[socket:TCP_send] Fehler beim Senden der Daten&quot;,1011);
	}

	return sockRValue;
};

int socketx::TCP_recv(unsigned char* ibuf ,int byteCount){//gibt anzah lder empfangenne bytes zurück

	sockRValue = recv(sock, ibuf, byteCount, 0); // gibt die Anzahl der empfangenen Bytes aus

	if (sockRValue == -1){
		throw SockExcept(&quot;[socket:TCP_recv] Fehler beim empfangen der Daten&quot;, 1012);
	}

	return sockRValue;
};

/*---- Die header Datei -----------*/
using namespace std;

class socketx{

public:

	socketx();	// Konstruktor
	int init(string ipAdress);
	int TCP_send(char* obuf, int byteCount);
	int TCP_recv(unsigned char* ibuf, int byteCount);

private:

	int sock;				//id des sockets
	int error;				// Vaiabel um error auf zu nehmen
	int sockRValue;
	struct hostent *ip_adrs;
	struct sockaddr_in server_addr;
	const char *adresse;
	unsigned long ip;

};

class SockExcept{
	private:
		string except;
		int eno;

	public:

		SockExcept(string s, int eno) : except(s) {this-&gt;eno= eno;}
		~SockExcept(){}
		string get_SockExcept(int &amp;eno) {eno=this-&gt;eno; return except;}
};
</code></pre>
<p>Nun meine Frage:<br />
gibt es hier offensichtliche Fehler die einen solchen error verursachen können?<br />
und wie kann mann sowas vernmeiden? Liegt es evtl Daran das der server nach einen geschetiterten bzw. abgebrochenen Verbindung für eine geraume zeit kein weiteren verbindungen über diesen port zu lässt?</p>
<p>Mfg BabCom</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2329282</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2329282</guid><dc:creator><![CDATA[BabCom]]></dc:creator><pubDate>Fri, 07 Jun 2013 16:30:34 GMT</pubDate></item></channel></rss>