Peer-To-Peer Serverless Multi-User Internet Chat Conferencer

User projects written in or related to FreeBASIC.
cenozoite
Posts: 243
Joined: Aug 21, 2005 21:41

Peer-To-Peer Serverless Multi-User Internet Chat Conferencer

Post by cenozoite »

**Updated November 15, 2008: New Improved Version Posted**

The topic title is a mouthful, but pretty accurately summarizes the function and nature of the program. I have completed and am requesting help beta-testing:

Download CenoChat

Some of the features include:

* Unlimited number of chatters
* IRC-style /commands and *Actions
* Public and private messages
* In-chat file transfer with resume
* Easy user-friendly interface and help


As a non-server P2P chat application the advantage is of course that you don't need an intermediary server to connect and communicate, but can connect directly to other users to form virtual chat rooms of any size.

The disadvantage of course is that with no server, you have to already know or be told the other party's IP Address (123.45.67.89 or whatever) in order to invite them to the chat. That means using email, phone, or some other messaging system first in order to communicate that information. But once you have that and connect, you're good to go.

Since this is CenoChat's initial release, it's likely fraught with various bugs that I haven't yet been able to catch or identify. As such I would be greatly appreciative of anyone who's willing to give it a good test run and report back any problems encountered. I'll fix any errors and update the program download link above to reflect the latest and most correct version.

Feel free to test it with as many simultaneous chatters as possible; the more the better. To test it with itself solo, simply run multiple instances and invite/connect to 127.0.0.1 as the localhost address.

I look forward to any feedback offered, and thanks in advance!

P.S. Once all the bugs are eventually worked out and I make the code more readable, I may release the actual source down the line if anyone is interested and I can find the time to clean it up. But in its current form it would be pretty indecipherable and useless to anyone else, so just the App for now.
Last edited by cenozoite on Oct 30, 2019 14:23, edited 14 times in total.
Chronos
Posts: 40
Joined: May 31, 2005 15:21
Location: KY, USA
Contact:

Post by Chronos »

Woah! You did everything I set out to do. *laughs*

Excellent work, cenozoite!
cenozoite
Posts: 243
Joined: Aug 21, 2005 21:41

Post by cenozoite »

Hehe, technically I didn't include the /diceroll thing so there's still room for modding ;) Seriously though, thanks for the support. Possible features under consideration for future releases are:

* Merge chats - combine seperate groups/rings of chatters into one interconnected session
* SendAll - simultaneous offer and send of a file to everyone in the chat who accepts it
* Self-constructive command aliasing - allow users to create and save custom /commands
* Chatlog


I'll wait to work out any kinks in the current version first though before I tackle those new features, at least one of which has a significant drawback which may make it unappealing.
Last edited by cenozoite on Oct 19, 2005 20:22, edited 1 time in total.
thesanman112
Posts: 538
Joined: Jul 15, 2005 4:13

p2p

Post by thesanman112 »

i believe a way around the problem of having to comunicate through another messenger to get ip's to install, would be have a few ip's to give out that will help build the ip list which each user has..basically have a master ip list that gets saved with each user, and while computers are online at the same time, then ip list will get updated and bigger, and given to each new user.

That my friend is the way.....

also have the program running on your computer for a while,as people test it, you store thier ip's in a master ip list that is givin out as each new user download's and test's you program. Also the new ip's get added to the list and sent to all user's online, the best is time stamp the master, make sure everyone is up to date.
Oz
Posts: 586
Joined: Jul 02, 2005 14:21
Location: Waterloo, Ontario, Canada
Contact:

Post by Oz »

you could have a server (only one) that ever p2p client hooks into and it's sole purpose is to list which ip addresses are online, and capible of communication

oz~
Chronos
Posts: 40
Joined: May 31, 2005 15:21
Location: KY, USA
Contact:

Post by Chronos »

Actually, for something like that, why not just allow people to set up their own Master Servers? Then you can begin to create "Community Nets". This also takes the burden of a full master server off whoever decided to host the potentially huge master server that would be involved if all clients connected to it. (And something the master server could do is record the last-used name used on an IP, so as to avoid "Who was 183.12.155.24 again???").

Hmmm...commands I could add...
/ooc - Out of Character, surrounds text in parentheses or brackets...
/roll - As before...

*thinks*
That's about it. If those two commands were implemented, this would be the ultimate P2P chat client for roleplaying. :D
/send is a good way to send the Game Master your character sheets, too, which is something I hadn't thought of until now. And a /sendall would be useful for GMs to send maps and other supplimental materials to players. Intriguing...
VirusScanner
Posts: 775
Joined: Jul 01, 2005 18:45

Post by VirusScanner »

File anchor isn't working for me... I get a download to a blank file called '6951-d', not a chat program.
cenozoite
Posts: 243
Joined: Aug 21, 2005 21:41

Post by cenozoite »

Thanks for the suggestions, guys. Having the program be able to act as a psuedo-server in order to update IP Address and connection lists is an interesting idea, and would create sort of a persistent P2P chat network that was always up and running in one form or another.

With decentralizaion being one of the main appeals of P2P apps, I'd probably implement it as a local function that created and maintained a community chat ring based on previous connections, rather than a huge global one that publicly listed everyone using the program all over the world. That way only your friends could see when you're online, more like an instant messenger buddy list than an IRC global user list.

Chronos,
I'll look at your previous code and add the /roll and /ooc commands shortly.. but two questions:

Should OOC just bracket the text, like:
[Chronos] (I need to get a drink) ... or have the term "ooc" printed somewhere too?

And should roll involve only the rolling of the specified number of D6's, or would an option to roll other polyhedral dice be useful too?

VirusScanner,
FileAnchor has brief periodical downtimes, but was working for me just a second ago when I tested it. If it still doesn't work for you next time you try it, let me know and I'll set up an alternate download mirror.
Ryan
Posts: 695
Joined: Jun 10, 2005 2:13
Location: Louisville, KY
Contact:

Post by Ryan »

Looking for a MUD to pay, Chronos? ; ) I've been working on a server for a while that I hope to turn into one. I've just been trying to learn more about linked lists and client/server connections. I've played/coded in Rom MUDs for about 10 years now and figured I'd handle things in a similar fashion (except the skill system). Really, I'm not sure what it will become, but if you're interested at all, feel free to email me.
Xerol
Posts: 122
Joined: Aug 12, 2005 1:59
Location: Here
Contact:

Post by Xerol »

I think the /roll command should take something in the format of XdY where X is the number of dice and Y is the sides on the dice. So then you could /roll 2d6 or whatever. Return an error if either number is above a certain number, less than 1, or nonintegral.
VirusScanner
Posts: 775
Joined: Jul 01, 2005 18:45

Post by VirusScanner »

Sorry, File anchor still not working :(. I wish it was though.
cenozoite
Posts: 243
Joined: Aug 21, 2005 21:41

Post by cenozoite »

Hmm, weird. I've re-uploaded the file and updated the fileanchor download link, which seems to be working better now. I've also added an alternate download link to the original message above, and you can also find it here:

Download Cenochat

I'll try to set up a couple of additional ones in case that one disappears too. Let me know if it works for you...
Torahteen
Posts: 91
Joined: Jul 15, 2005 15:58
Contact:

Post by Torahteen »

That thing is sweet! Would it happen to be... Open Source?! *Whistles*

Ceno, you should post a time for everyone to join. Like tommorow (Saturday) night. Everyone gives you thier IP, and then you invite us all a little after the time scheduled.
cenozoite
Posts: 243
Joined: Aug 21, 2005 21:41

Post by cenozoite »

Okay, a few things:

First, I've added the /roll and /ooc commands and updated the download file above to reflect the newest version. You can use

/ooc Message

to produce a bracketed out-of-character (Message)

And for /roll, the syntax is /roll [#[d#]] to roll the specified number of specified-sided dice. Meaning the following:

Code: Select all

/roll       roll 1 D6 (six-sided die) by default
/roll #     roll # number of D6
/roll #d#   roll # number of D#
Let me know if you run into any problems.

Torahteen,
Yes, I do plan to eventually release the source code for the program, once I've gotten any existing bugs worked out and had a chance to clean up and comment the code appropriately. At the moment all my on-the-fly variables and multi-recursive loops would be pretty indecipherable to anyone trying to make sense of them.

As for your suggestion of pre-scheduling a test-chat session for tomorrow, I'm certainly game, though I'd have to say somewhere in the afternoon closer to 2pm EST would be better for me than the evening. Anyone who's interested in participating can post their IP in a message here, preferably as close to the planned time as possible, since I know that my own IP address changes every time I have to reboot, which is quite a bit.

Hope to see you all there!
VirusScanner
Posts: 775
Joined: Jul 01, 2005 18:45

Post by VirusScanner »

The fileanchor link works now. Cool program, but I use a DSL modem so I can only connect to computers in the network. I'd have to set up forwarding which I don't know how to do.
Post Reply