Hur ska sockets stängas på rätt sätt C/C++

Permalänk
Medlem

Hur ska sockets stängas på rätt sätt C/C++

Hej.

Så jag leker med Socket i c++ (sys/socket.h) i Linux miljö, nu har jag upptäckt att när klienten stänger anslutning så får jag: "Coonection reset by peer". Vilket jag googlad och hitta denna länk. Så nu undra jag hur göra jag en FIN-ACK i c/c++ när jag stänger anslutningen?

Tack för svar!

Visa signatur

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6

Permalänk
Medlem

För att tydlig göra hur jag för det idag:
börja med att sluta läsa/skriv till socketen, sedan tar bort meddelande köerna därefter close(socket);

Vilket då om jag förstått det rätt skapa "Coonection reset by peer".

Visa signatur

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6

Permalänk
Medlem

Ja, då ingen har svarat. Kan jag säga att min lösning vart att använda: shutdown(socket, SHUT_RDWR);

Visa signatur

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6

Permalänk

Det är väl ganska korrekt. Kom ihåg bara att tömma läskön (d.v.s. lästa antal bytes skall vara 0 innan du gör en shutdown.). Och sedan när allt är klart och inget mer skall göras då är det dags att göra en close på socketen. Sedan är du klar.