Raised This Month: $ Target: $400
 0% 

[Modulo] Sockets3


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
Destro-
Veteran Member
Join Date: Jun 2010
Location: $me->location();
Old 08-17-2013 , 23:08   [Modulo] Sockets3
#1

[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[]); 
Attached Files
File Type: zip sockets3.zip (67.4 KB, 208 views)
__________________

Last edited by Destro-; 08-17-2013 at 23:28.
Destro- is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 18:05.


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