I modified the code of a plugin that does what you are asking to fit as an example.
Code:
#include <amxmodx>
#include <engine>
#include <sockets_hz>
#define IP "127.0.0.1"
#define PORT 1337
#define THINK_DELAY 0.01
#define RECEIVE_DELAY 1.0
new g_socket;
new g_entity;
public plugin_init()
{
register_plugin("Listening Socket Example", "-0.1", "Exolent");
new error;
g_socket = socket_listen(IP, PORT, SOCKET_TCP, error);
if( error )
{
switch( error )
{
case 1: log_amx("Error creating a TCP socket to %s:%i", IP, PORT);
case 2: log_amx("Error resolving the hostname for %s:%i", IP, PORT);
case 3: log_amx("Error connecting a TCP socket to %s:%i", IP, PORT);
}
return;
}
socket_unblock(g_socket);
g_entity = create_entity("info_target");
if( is_valid_ent(g_entity) )
{
entity_set_string(g_entity, EV_SZ_classname, "TCP_Socket_Reader");
entity_set_float(g_entity, EV_FL_nextthink, get_gametime() + THINK_DELAY);
register_think("TCP_Socket_Reader", "FwdThink");
}
else
{
log_amx("Could not create TCP Socket Receiver entity.");
plugin_end();
}
}
public plugin_end()
{
if( g_socket > 0 )
{
socket_close(g_socket);
}
}
public FwdThink(entity)
{
if( entity != g_entity ) return;
static socket;
if( (socket = socket_accept(g_socket)) > 0 )
{
socket_unblock(socket);
set_task(RECEIVE_DELAY, "TaskReceiveData", socket);
}
entity_set_float(entity, EV_FL_nextthink, get_gametime() + THINK_DELAY);
}
public TaskReceiveData(socket)
{
// socket_recv(socket, ...);
}
Hope this helped.
__________________