Sockety

Prosty przykład jak używać socketów z poziomu pluginu amxx

#include <amxmodx>
#include <amxmisc>
#include <sockets>

#define SITE                "/index.php/2011/09/12/info-po-smierci/6" 
#define HOST                    "darkgl.pl" 

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "DarkGL"

new g_Socket;

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_clcmd("say /test","test")
}

public test(id){
	new iError,szSendBuffer[512]
	
	g_Socket = socket_open(HOST, 80, SOCKET_TCP, iError)
	
	switch (iError) 
	{ 
		case 1: 
		{ 
			log_amx("Unable to create socket.") 
			return ;
		} 
		case 2: 
		{ 
			log_amx("Unable to connect to hostname.") 
			return ;
		} 
		case 3: 
		{ 
			log_amx("Unable to connect to the HTTP port.") 
			return ;
		} 
	} 
	
	format(szSendBuffer, charsmax(szSendBuffer), "GET %s^nHost:%s^r^n^r^n", SITE, HOST) 
	socket_send(g_Socket, szSendBuffer, charsmax(szSendBuffer)) 
	
	set_task(1.0, "socketAnswer", .flags = "b") 
}

public socketAnswer(){
	if (socket_change(g_Socket)) { 
		new szData[1024]
		
		socket_recv(g_Socket, szData, charsmax(szData) ) 
		
		log_amx(szData);
		
		socket_close(g_Socket);

		remove_task( 0 );
	}
}

Pobiera on kod html strony http://www.darkgl.pl/index.php/2011/09/12/info-po-smierci/6 oczywiście socketów można używać do jeszcze wielu innych rzeczy (wymienianie informacji między serwerami itp.)

A tutaj linki do tutoriali (po angielsku)

http://forums.alliedmods.net/showthread.php?t=41913
http://forums.alliedmods.net/showthread.php?t=151401
http://forums.alliedmods.net/showthread.php?t=142858
http://forums.alliedmods.net/showthread.php?t=150519

3 komentarzy o “Sockety

  1. Fajnie, dziękować, ale mam taki kod, do którego sam doszedłem i nie najlepiej to działa. Raz pobiera stronę, raz tylko kilka pierwszych znaków, nie wiem dlaczego.

Dodaj komentarz