„Informatika 2 - Socket kezelés labor” változatai közötti eltérés

A VIK Wikiből
Ugrás a navigációhoz Ugrás a kereséshez
(Új oldal, tartalma: „{{GlobalTemplate|Villanyalap|LaborBeugro20080213}} ==TCP szerver és kliens== * '''ws2_32.lib beépítése''' VS2010: Project->Properties->Configuration Properties(le…”)
 
a (David14 átnevezte a(z) LaborBeugro20080213 lapot a következő névre: Informatika 2 - TCP szerver készítése labor: Értelmes cím)
(Nincs különbség)

A lap 2013. január 18., 13:41-kori változata

Ez az oldal a korábbi SCH wiki-ről lett áthozva. Az eredeti változata itt érhető el.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor kérlek javíts rajta egy rövid szerkesztéssel.

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót


TCP szerver és kliens

  • ws2_32.lib beépítése

VS2010: Project->Properties->Configuration Properties(lenyíló)->Linker(lenyíló)->Input->Additional dependencies. Itt rámész, hogy edit, beírod, hogy ws2_32.lib, és működik.

  • A házinál hogy inklúdozzd a winsock2.h-t

http://social.msdn.microsoft.com/Forums/en/Vsexpressvc/thread/90186f6e-78af-4486-b5e1-8571ac63b784 -- baki - 2011.02.19.


4. kérdés

blokkol == a kódod megáll az accept()-nél és addig nem megy tovább amíg nem érkezik bejövő kapcsolat, amit el tud fogadni. Persze ezt a blokkolást ki lehet kapcsolni, de defaultból blokkol.


6-10. kérdés

A kódolást igénylő (6-10) kérdések válaszai, C program formájában: Megjegyzés: sajnos ez a fajta socketkezelés Windows alatt alapból nem megy, ott kicsit bonyolultabb, és más include-ok is kellenek. Cygwin-nel úgy tudom, Win alatt is működésre lehet ezt bírni.

/* az include-ok közül néhány kell csak, de nem tudom, melyikek */
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <unistd.h>

int main() {

/* pár változó a feladatokhoz */
	SOCKET s;
	struct sockaddr_in addr;
	int x;
	char *buffer;
	char message[]="hello";
	char str1[]="spqr";
	char str2[]="k^3";
	char ch='s';
	char *temp;

/* elkészítjük a socketet */
	s=socket(PF_INET, SOCK_STREAM, 0);
	if (s<0) {
		printf("socket hiba\n");
		return 1;
	}

/* elkészítjük a címet */
	addr.sin_family = AF_INET;
	addr.sin_addr.s_addr = inet_addr("64.233.167.99"); /* a neptun címe :D */
	addr.sin_port = htons(80);

/* kapcsolódunk a szerverhez */
	x=connect(s, (struct sockaddr *)&addr, sizeof(addr));
	if (x<0) {
		printf("kapcsolódási hiba\n");
		return 1;
	}

/* 6-odik feladat: */
	buffer=(char *)malloc(sizeof(char)*16); /* 16 byte hely lefoglalása */
	x=recv(s, (void *)buffer, sizeof(buffer), 0);
	if (x<0) printf("olvasási hiba\n");
	if (x==0) printf("olvasás sikeres, a kapcsolat lezárult\n");
	if (x>0) printf("olvasás sikeres\n");
	free(buffer);

/* 7-edik feladat: */
	x=send(s, (const void *)message, sizeof(message), 0);
	if (x<0) printf("írási hiba\n");
	else printf("%d byte elküldve\n", x);

/* 8-adik feladat: */
	x=strcmp(str1, str2);
	if (x==0) printf("a két string azonos\n");
	else printf("a két string különböző\n");

/* 9-edik feladat: */
	temp=strstr(str1, str2);
	if (temp!=NULL) printf("az első string tartalmazza a másodikat\n");
	else printf("az első string nem tartalmazza a másodikat\n");

/* 10-edik feladat: */
	temp=strchr(str1, ch);
	if (temp!=NULL) printf("az első string tartalmazza a karaktert\n");
	else printf("az első string nem tartalmazza a karaktert\n");

/* vége... */
	closesocket(s);
	return 0;
}


  • Ezen a helyen volt linkelve a(z) TCPSzerver.pdf nevű fájl ("TCPSzerver.pdf" link szöveggel) a régi wiki http://wiki-old.sch.bme.hu/bin/view/Villanyalap/LaborBeugro20080213 oldaláról. (Ha szükséged lenne a fájlra, akkor a pontos oldalmegnevezéssel együtt küldd el a wiki
    Hiba a bélyegkép létrehozásakor: Nem lehet a bélyegképet a célhelyre menteni
    @sch.bme.hu címre a kérésedet)
A beugró maga

-- G - 2008.02.26.

-- GAbika - 2011.