abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
dnes 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 0
dnes 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
včera 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 15
včera 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 8
včera 14:15 | Nová verze

Byla vydána verze 7.1.0 skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Jedná se o první stabilní verzi nejnovější větvě 7.1. Přehled novinek v dokumentaci. Podrobnosti v ChangeLogu. K dispozici je také příručka pro přechod z PHP 7.0.x na PHP 7.1.x.

Ladislav Hagara | Komentářů: 2
včera 12:55 | Nová verze

Google Chrome 55 byl prohlášen za stabilní. Nejnovější stabilní verze 55.0.2883.75 tohoto webového prohlížeče přináší řadu oprav a vylepšení (YouTube). Opraveno bylo také 36 bezpečnostních chyb. Mariusz Mlynski si například vydělal 22 500 dolarů za 3 nahlášené chyby (Universal XSS in Blink).

Ladislav Hagara | Komentářů: 4
včera 11:55 | Pozvánky

Máte rádi svobodný software a hardware nebo se o nich chcete něco dozvědět? Přijďte na 135. sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.

xkucf03 | Komentářů: 0
včera 00:10 | Nová verze

Byla vydána verze 3.2 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata. Z novinek lze zmínit například podporu protokolů DNP3 a CIP/ENIP, vylepšenou podporu TLS a samozřejmě také aktualizovanou dokumentaci.

Ladislav Hagara | Komentářů: 0
1.12. 21:00 | Nová verze

Byla vydána beta verze Linux Mintu 18.1 s kódovým jménem Serena. Na blogu Linux Mintu jsou hned dvě oznámení. První o vydání Linux Mintu s prostředím MATE a druhé o vydání Linux Mintu s prostředím Cinnamon. Stejným způsobem jsou rozděleny také poznámky k vydání (MATE, Cinnamon) a přehled novinek s náhledy (MATE, Cinnamon). Linux Mint 18.1 bude podporován až do roku 2021.

Ladislav Hagara | Komentářů: 0
1.12. 16:42 | Nová verze

Byl vydán Devuan Jessie 1.0 Beta 2. Jedná se o druhou beta verzi forku Debianu bez systemd představeného v listopadu 2014 (zprávička). První beta verze byla vydána v dubnu letošního roku (zprávička). Jedna z posledních přednášek věnovaných Devuanu proběhla v listopadu na konferenci FSCONS 2016 (YouTube, pdf).

Ladislav Hagara | Komentářů: 0
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 767 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: zavreny soket je porad aktivni

20.9.2005 17:38 Frantisek Fencl
zavreny soket je porad aktivni
Přečteno: 111×
Zdravim, mam nasledujici dotaz: delam program (v C), ktery komunikuje s webserverem na portu 1719. Hlavni cast zdrojaku:

#define MAX 100
#define EXIT_FAILURE 0
#define EXIT_SUCCESS 1
#define PORT 1719
#define BACKLOG 10 //how many pending connections will stay in front
#define BUFLEN 200 //how long (max) will be recieving message

int recok, len, max, retval, mainSocket, clientSocket;
struct sockaddr_in sockName, clientName;
char message[BUFLEN], buffer[BUFLEN], end_seq[3] = "666";

/* 1 - Creating a socket */
if ((mainSocket = socket(PF_INET,SOCK_STREAM,0)) == -1) // vytvoreni soketu main - naslouchaci soket
{
printf("%s\n","Cannot create a communication socket");
exit(EXIT_FAILURE);
}

/* Naming a socket */
sockName.sin_family = AF_INET; // protokoly TCP/IP
sockName.sin_port = htons(PORT); // preklad na sitovou adresu - univerzalni format
sockName.sin_addr.s_addr = INADDR_ANY; // INADDR_ANY je IP adresa stroje
memset(&(sockName.sin_zero),'\0',8); // vyplneni 8-mi zbylych bytu nulou
retval = bind(mainSocket, (struct sockaddr *) &sockName, sizeof(sockName)); // pojmenovani soketu

/* The Big Loop */
while (1)
{
retval = listen(mainSocket,BACKLOG); // naslouchani na soketu
retval = sizeof(clientName);
clientSocket = accept(mainSocket, (struct sockaddr *) &clientName, &retval); //vytvoreni komunikacniho soketu
if ((len = recv(clientSocket, buffer, BUFLEN - 1, 0)) > 0) //prijem zpravy ze soketu (cislo), len je delka zpravy v bajtech
 {
  buffer[len] = '\0';
  printf("%s %s\n","Recieved number:",buffer);
  strcpy(message,"Number was recieved successfully\0");
 }
else
 {
  printf("%s\n","Nothing was send");
  strcpy(message,"Number was not recieved\0");
 }
send(clientSocket,message,sizeof(message),0);
printf("%s %s%s\n","Message\"",message,"\"was sent to Apache");
close(clientSocket); //uzavreni soketu
if ((strcmp(buffer, end_seq)) == 0)
 {
  close(mainSocket);
  exit(EXIT_FAILURE);
 }
}

Na opacne strane je PHP skript:

$number = $_REQUEST["number"];
$socket = FSockOpen("127.0.0.1",1719);
$writeok = FPuts($socket,$number);
$message = FGetS($socket,200);
$close_sock = FClose($socket);

Vsechno vypada v poradku, obe strany zaviraji po komunikaci soket. Kdyz ale vypisu sokety pomoci socklist, vzdycky tam najdu ten chteny naslouchaci soket ale taky soket co nechci:

tcp 1719 36764 2001 11500 4 konfd
tcp 1719 0 0 0 0

Ten nechteny soket se vzdycky tak cca po 50 sekundach ztrati, ale problem je, kdyz posilam vic cisel za sebou, tak mi to potom vyhodi "Segmentation fault".
Diky za pomoc

Odpovědi

Luboš Doležel (Doli) avatar 20.9.2005 17:43 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: zavreny soket je porad aktivni
Stav toho socketu je TIME_WAIT ne? Pokud ano, tak je vše v pořádku.
20.9.2005 18:02 Frantisek Fencl
Rozbalit Rozbalit vše Re: zavreny soket je porad aktivni
Tak nevim, po spusteni programu je vypise socklist pouze ten chteny soket (mainSocket), po prvnim prijeti cisla, kdy je vytvoren a zavren soket "clientSoket" se objevi dalsi soket v socklistu. Nevidim duvod proc by se tam mel objevit dalsi soket. Pokud se mylim, prosim o vysvetleni :)
Luboš Doležel (Doli) avatar 20.9.2005 18:13 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: zavreny soket je porad aktivni
Nevím, co je to socklist, ale co ukáže netstat?
20.9.2005 18:31 Frantisek Fencl
Rozbalit Rozbalit vše Re: zavreny soket je porad aktivni
Aha, v netstatu se objevi taky o soket vic:

Local Address Foreign Address State User Inode
localhost:1719 localhost:2140 TIME_WAIT root 0

Normalne je tam jenom:

Local Address Foreign Address State User Inode
*:1719 *:* LISTEN frankie 75147

Jak se mam ale toho soketu zbavit?
Josef Kufner avatar 20.9.2005 19:18 Josef Kufner | skóre: 66
Rozbalit Rozbalit vše Re: zavreny soket je porad aktivni
TIME_WAIT znamena, ze socket je už mrtvý a čeká se na nějaký timeout, aby to obě strany věděly jistě. Je to naprosto normální a není to chyba. Taky to nijak nepřekáží, pokud nejde o poslouchací socket serveru, poté co server chcípne a chce znovu poslouchat na tomtéž portu.
Hello world ! Segmentation fault (core dumped)
20.9.2005 19:31 Frantisek Fencl
Rozbalit Rozbalit vše Re: zavreny soket je porad aktivni
Ted jsem zjistil, ze mi probehnou v pohode tri spojeni a vzdycky pri ctvrtym to spadne - tak to jsem z toho fakt jelen :)
20.9.2005 18:41 petr_p
Rozbalit Rozbalit vše Re: zavreny soket je porad aktivni
Hledejte volbu SO_REUSEADDR v socket(7).
20.9.2005 19:21 Frantisek Fencl
Rozbalit Rozbalit vše Re: zavreny soket je porad aktivni
Nasel jsem:

int yes = 1;
setsockopt(mainSocket, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes)

ale nic to nepomaha - chova se to porad stejne
23.9.2005 11:29 petr_p
Rozbalit Rozbalit vše Re: zavreny soket je porad aktivni
Kotroluj navratovy hodnoty a ruzne chybove stavy.

Napr. fce recv() muze vratit 0, coz znamena, ze druha strana zavrela spojeni, ale ty se stejne pokousis do nej neco poslat pomoci send() a pak fci strcmp() ctes z bufferu, ktery napr. nemusi obsahovat '\0', cimz uteces z alokovane pameti pro buffer[BUFLEN] a jadro ti posle SIGSEGV.

Zkousel jsi to vubec debugovat? Skompiluj to s volbou -g, pak to pust pres nejaky debugger az to spadne, tak se podivej kde a jake jsou hodnoty prommenych.
23.9.2005 16:34 Beda
Rozbalit Rozbalit vše Re: zavreny soket je porad aktivni
stav toho soketu je v netstatu popsan jako finwait nebo finwait2, ne?

to znamena, ze probiha rozpojovani cekani na paket s reset flagem a dokonce i po rozpojeni je soket jeste nejakou dobu podrzeny, aby ho nekdo nepouzil, protoze tcp pakety muzou prijit vice nez jednou.
23.9.2005 16:37 Beda
Rozbalit Rozbalit vše Re: zavreny soket je porad aktivni
asi sockName.sin_port zmenit tak, aby odchozi port byl any a cilovy port byl PORT?
2.10.2005 17:00 Frantisek Fencl
Rozbalit Rozbalit vše Re: zavreny soket je porad aktivni
Diky vsem za pomoc, chyba byla jinde. Aspon jsem se naucil neco noveho
2.10.2005 17:16 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: zavreny soket je porad aktivni
Co kdybys napsal, kde?
-- Nezdar není hanbou, hanbou je strach z pokusu.
23.5.2006 02:12 czfrankie | skóre: 8 | blog: frankie
Rozbalit Rozbalit vše Re: zavreny soket je porad aktivni
Chyba s tím vůbec nesouvisela, zapisoval jsem do soubou, který neexistoval :). Dvakrát to prošlo a potřetí už ne
Tak zahraj, ať víme jakej seš

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.