Find Jobs
Hire Freelancers

DLL As A Simple IRC Client -- ALL Logic Provided

$30-5000 USD

Завершено
Опублікований almost 13 years ago

$30-5000 USD

Оплачується при отриманні
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 проекту: 3469205

Про проект

2 пропозицій(-ї)
Дистанційний проект
Активність 13 yrs ago

Хочете заробити?

Переваги подання заявок на Freelancer

Вкажіть свій бюджет та терміни
Отримайте гроші за свою роботу
Опишіть свою пропозицію
Реєстрація та подання заявок у проекти є безкоштовними
Доручений:
Аватарка користувача
See private message.
$85 USD за 2 дні(-в)
5,0 (5 відгуки(-ів))
2,7
2,7
2 фрілансерів(-и) готові виконати цю роботу у середньому за $106 USD
Аватарка користувача
See private message.
$127,50 USD за 2 дні(-в)
0,0 (1 відгук)
0,0
0,0

Про клієнта

Прапор UNITED STATES
United States
5,0
24
На сайті з вер. 8, 2009

Верифікація клієнта

Дякуємо! Ми надіслали на вашу електронну пошту посилання для отримання безкоштовного кредиту.
Під час надсилання електронного листа сталася помилка. Будь ласка, спробуйте ще раз.
Зареєстрованих користувачів Загальна кількість опублікованих робіт
Freelancer ® is a registered Trademark of Freelancer Technology Pty Limited (ACN 142 189 759)
Copyright © 2024 Freelancer Technology Pty Limited (ACN 142 189 759)
Завантажуємо для перегляду
Дозвіл на визначення геолокації надано.
Ваш сеанс входу закінчився, і сеанс було закрито. Будь ласка, увійдіть знову.