AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Guías/Tutoriales (https://forums.alliedmods.net/forumdisplay.php?f=137)
-   -   [Modulo] Sockets3 (https://forums.alliedmods.net/showthread.php?t=223867)

Destro- 08-17-2013 23:08

[Modulo] Sockets3
 
1 Attachment(s)
[Modulo] Sockets 3.

Es una modificación del modulo sockets_hz,que a su vez es una modificación del modulo sockets1.


Code:
/* Opens a new connection to hostname:port via protocol (either SOCKET_TCP or SOCKET_UDP),  * returns a socket (positive) or negative or zero on error.  * States of error:  * 0 - no error  * 1 - error while creating socket  * 2 - couldn't resolve hostname  * 3 - couldn't connect to given hostname:port */ native socket_open(const _hostname[], _port, _protocol = SOCKET_TCP, &_error); /* Opens a new listenning connection bind to hostname:port via protocol (either SOCKET_TCP or SOCKET_UDP),  * returns a socket (positive) or negative or zero on error.  * States of error:  * 0 - no error  * 1 - error while creating socket  * 2 - couldn't resolve hostname  * 3 - couldn't connect to given hostname:port */ native socket_listen(const _hostname[], _port, _protocol = SOCKET_TCP, &_error); /* Closes a Socket */ native socket_close(_socket); /* Accept a connection on a listenning socket  * returns a socket (positive) or negative or zero on error. */ native socket_accept(_socket); /* Set a socket in unblocking mode */ native socket_unblock(_socket); /* Recieves Data to string with the given length */ native socket_recv(_socket, _data[], _length); /* Sends data to the Socket */ native socket_send(_socket, const _data[]); /* Same as socket_send but Data can contain null bytes */ native socket_send2(_socket, const _data[], _length); /* This function will return true if the state (buffer content) have changed within the last recieve or * the timeout, where timeout is a value in µSeconds, (1 sec =1000000 µsec). * Use to check if new data is in your socket. */ native socket_change(_socket, _timeout=100000); // Nuevo! =================================================== /* Recieves Data to string with the given length */ native socket_recvfrom(_socket, _data[], _len, &_port, _ip[], _iplen); /* Sends data to specific server */ native socket_sendto(_socket, _data[], _ip[], _port);


Ejemplos:
Servidor:
PHP Code:

#include <amxmodx>
#include <sockets3>

#define MMO_SERVER    "127.0.0.1"
#define MMO_PORT    30015

new g_socket

public plugin_init()
{
    new 
error
    g_socket 
socket_listen(MMO_SERVERMMO_PORTSOCKET_UDPerror)

    if(!
g_socket || error )
    {
        
set_fail_state("Error listen socket")
        return
    }
    
    
socket_unblock(g_socket
    
    
set_task(1.0"test"flags="b")
}

public 
test()
{
    if(!
socket_change(g_socket0)) return
    
    static 
data[20], ip[25], port
    data
[0] = 0
        
    socket_recvfrom
(g_socketdatacharsmax(data), portip24)
    if(!
data[0]) return
    
    
    new 
result socket_sendto(g_socketdataipport// Le respondemos al cliente
    
    
server_print("data: [%s] - ip:[%s] - port:[%d] - result: [%d]"dataipportresult)



Cliente:
PHP Code:

#include <amxmodx>
#include <sockets> // Para el cliente es suficiente con el modulo viejo

#define MMO_SERVER    "127.0.0.1"
#define MMO_PORT    30015

new g_socket

public plugin_init()
{
    new 
error
    g_socket 
socket_open(MMO_SERVERMMO_PORTSOCKET_UDPerror)

    if(!
g_socket || error )
    {
        
set_fail_state("Error open socket")
        return
    }

    
set_task(1.0"test"flags="b")
}

public 
test()
{
    
socket_send(g_socket"eco")
    
    if(!
socket_change(g_socket0)) return
    
    static 
data[20]
        
    
socket_recv(g_socketdatacharsmax(data))
    if(!
data[0]) return
    

    
server_print("Respuesta: %s"data)



NOTA: socket_send en el include (modulo sockets1/sockets_hz) tiene tres parámetros,pero el ultimo no se usa,pueden dejar la native asi:

PHP Code:

/* Sends data to the Socket */
native socket_send(_socket, const _data[]); 


Neeeeeeeeeel.- 08-18-2013 00:03

Re: [Modulo] Sockets3
 
Lo hiciste vos? o:

Caramelo_ZP 08-18-2013 00:08

Re: [Modulo] Sockets3
 
Intedesante

Destro- 08-18-2013 00:20

Re: [Modulo] Sockets3
 
Quote:

Originally Posted by Neeeeeeeeeel.- (Post 2015856)
Lo hiciste vos? o:

No,mi sobrinito de 2 meses...
xd


Ahora que tengo pc decente voy a ver si me creo una vps en linux para ver si me puedo acomodar todo para compilar para linux :D.

DiegoCS 08-18-2013 00:26

Re: [Modulo] Sockets3
 
Quote:

Originally Posted by Caramelo_ZP (Post 2015859)
Interesante

ON: Good Job , lo estaba esperando .

ChileScripting 08-18-2013 00:42

Re: [Modulo] Sockets3
 
Perdonen mi ignorancia, pero nunca supe para que sirven los sockets y ahora que hay algo en español ver si me pueden explicar para que sirven, y si no es mucho pedir que me lo explique alguien que sepa.

Stereo 08-18-2013 07:07

Re: [Modulo] Sockets3
 
Quote:

Originally Posted by ChileScripting (Post 2015873)
Perdonen mi ignorancia, pero nunca supe para que sirven los sockets y ahora que hay algo en español ver si me pueden explicar para que sirven, y si no es mucho pedir que me lo explique alguien que sepa.

Comunicación entre servidor/cliente, en internet hay mucha info

Grande Destro pero versión linux please

Destro- 08-18-2013 10:37

Re: [Modulo] Sockets3
 
Si joropito se copa y lo compila en linux...
creo que no hay que modificar nada para compilarlo en linux,lo que agregue es igual en linux/win.

Roccoxx 08-18-2013 18:27

Re: [Modulo] Sockets3
 
que lindo destro.

me va a re servir esto :)

edit: ahi te lo meti en la recopilacion, que cagada que se me quemo el cargador de la notebook y no puedo programar :/

gladius 08-19-2013 01:32

Re: [Modulo] Sockets3
 
Code:

MF_Log("Sockets3 Error 1 (Contactar con Destro)");
:D


All times are GMT -4. The time now is 01:37.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.