Find Jobs
Hire Freelancers

DLL As A Simple IRC Client -- ALL Logic Provided

$30-5000 USD

Terminado
Publicado hace casi 13 años

$30-5000 USD

Pagado a la entrega
Just so you know, you're dealing with a professional coder, so I'll know exactly what needs to be done and can explain it in great detail :-) I work well with others. What I'm looking for is simple but requires a bit of "busy work", unless you can use a lightweight IRC plugin pre-made which I'm not opposed to as long as it is portable. I need a DLL compiled to my specifications (with my provided source code) that has the following functions. These functions are meant to be ran from a third party application by loading it dynamically. You will need to save some information in local variables and arrays, and they will be read by calling functions in the DLL as well. **Functions are BELOW in the "advanced" section as well as all comments necessary to help you understand each function that I need.** Achieve this however you want to, this is all pseudo code. It is super easy, and just needs to follow standard IRC protocol. There may even be some IRC libraries out there in existance...you can use them if you'd like, just so long as they're portable, and the functions are very similar to what you see below. I can help however you need to. This is a RUSH job, so the quicker the better (a day or two), so bid according!!! **(Remember, see below for actual pseudo code)** -Kevin ## Deliverables Here is the full written rundown..should be very basic and easy to do if you know IRC and socket programming, or you are familiar with a library that does: /* This is how I'll be passing you arrays..in the structure arrStr. So you can simply do: arrStr *newArr; Then access or modify the array like this: newArr[x] = Y len is the length of the array */ struct arrStr { int len; char *string; }; int connectToIRC(char *server, int port) { /* Connect to IRC server. Return negative number if not possible, and return the connection socket if successfully connected and ready to join a channel. */ return(SOCKET_OF_CONNECTION); } int joinIRCChannel(int socket, char *channel) { /* Send the command to join a channel and monitor the response to make sure that we have successfully joined the IRC channel. Once joined, you can save the IRC channel or whatever information you need to set as "joined" locally, that way it can be called on later when I want a list of what chat rooms I am joined to. Return -1 if you can't join, saving the actual reason from the server in a global string. That way, I can call a function later and get the last saved string, just like GetLastError() If joined, the offset of the IRC channel in a 0 offset is returned, so I can access each channel's queue by this number as if it's an offset in an array. So, if "joinIRCChannel()" returns 5 when channel = "#chat", then I would call getChannelQueue(5) to get my current queue of messages for "#chat". */ } int callRecvFunction(int socket, arrStr arr) { int num = 0; /* This will be the raw receive function for the socket that will call recv(), run an active filter for each IRC channel we are joined in (added to array in joinIRCChannel upon successful join) and put the messages in global arrays separated by channel, so they may be called on with later functions. This function is called frequently (every 1/10th of a second at it's slowest) and is intended to be the engine behind this method. Example pseudo code of this function: char *recv = receiveFromServer(socket): for(i = 0; i < totalJoinedChannels; i++) { if(thisMessageBelongsToChannel(globalJoinedChannels[i],recv) { //Packet in "recv" belongs to global channel with offset "i" -- we are searching all channels to see if it is a "say" packet //thisPacketBelongsToChannel() ONLY returns true if it is a MESSAGE // packet.. in other words, I don't want ANY messages to save // in the global variable unless they are simple /say chat messages to // the channel by any user in the chat room //Put the message in the array in this format: // "[NickName] Message Here" } } */ } int getChannelQueue(int channelNumber, arrStr copyArray) { //Find which channel number belongs to what channel //Then, check the array for that specfic channel of all "say" messages since last getChannelQueue() call on this channel number //copy each element of this array into copyArray (can be written simply by strcpy(copyArray[x],globalArr[channelNumber][x]) for example) //Return the number of elements are in copyArray //Return -1 if failed somehow (not in this channel currently), and 0 if there are no messages //Make sure to erase the channel array, so if getChannelQueue is called immediately after with same channel number, //it will return "0" } int getListOfChannels(arrStr copyArray) { //Return a lsit of channels currently joined by copying all channels into copyArray and returning the number of channels //Use same method of copying into array as getChannelQueue(). } int leaveChannel(int channelInt) { //Part from channel from channel integer //return 0 for successful leave, -1 for not. Use a getlasterror method for text based errors from server }
ID del proyecto: 3469205

Información sobre el proyecto

2 propuestas
Proyecto remoto
Activo hace 13 años

¿Buscas ganar dinero?

Beneficios de presentar ofertas en Freelancer

Fija tu plazo y presupuesto
Cobra por tu trabajo
Describe tu propuesta
Es gratis registrarse y presentar ofertas en los trabajos
Adjudicado a:
Avatar del usuario
See private message.
$85 USD en 2 días
5,0 (5 comentarios)
2,7
2,7
2 freelancers están ofertando un promedio de $106 USD por este trabajo
Avatar del usuario
See private message.
$127,50 USD en 2 días
0,0 (1 comentario)
0,0
0,0

Sobre este cliente

Bandera de UNITED STATES
United States
5,0
24
Miembro desde sept 8, 2009

Verificación del cliente

¡Gracias! Te hemos enviado un enlace para reclamar tu crédito gratuito.
Algo salió mal al enviar tu correo electrónico. Por favor, intenta de nuevo.
Usuarios registrados Total de empleos publicados
Freelancer ® is a registered Trademark of Freelancer Technology Pty Limited (ACN 142 189 759)
Copyright © 2024 Freelancer Technology Pty Limited (ACN 142 189 759)
Cargando visualización previa
Permiso concedido para Geolocalización.
Tu sesión de acceso ha expirado y has sido desconectado. Por favor, inica sesión nuevamente.