Sorry your browser is not supported!

You are using an outdated browser that does not support modern web technologies, in order to use this site please update to a new browser.

Browsers supported include Chrome, FireFox, Safari, Opera, Internet Explorer 10+ or Microsoft Edge.

Program Announcements / MikeNet - Multiplayer Plugin

Author
Message
Michael P
14
Years of Service
User Offline
Joined: 6th Mar 2006
Location: London (UK)
Posted: 19th Dec 2008 00:49 Edited at: 21st May 2009 14:40
1.0.9


New features
-New packet formulation/deformulation system with far greater flexibility.
-Broadcasting capability: this enables messages to be sent from one device to all other devices on a LAN without having to setup a connection.
-Ability to re-enable error message boxes after disabling them.
-Catch all UDP mode which does not discard any packets, allowing you to decide which ones to drop after using mnRecvUDP.
-Ability to list available local IP addresses.
-Advanced feature for C++ users: Optionally, instead of using the mnRecv commands you will be able to set an application defined function to be executed every time a packet is received.
-HTML help files for DBP users.
-New advanced MikeNet demo (known as cube world pro)

Bugs fixed
-mnGetLocalIP returned 0.0.0.0 when MikeNet allocates the IP automatically in server state.
-mnFinish could sometimes cause an access violation.
-mnPollConnect and mnStopConnect would not work for DBP users.

Changes
-mnGetUnsignedShortInteger and mnAddUnsignedShortInteger have been renamed as: mnGetUnsignedShortInt and mnAddUnsignedShortInt so that they are similar to other commands.
-mnGetError commands now return C string instead of standard string. This only effects C++ users.
-General performance increases due to improved memory management.

New commands
- mnCreatePacket
- mnDeletePacket
- mnSetMemorySize
- mnGetMemorySize
- mnSetUsedSize
- mnGetUsedSize
- mnSetCursor
- mnGetCursor
- mnGetOperation
- mnGetInstance
- mnSetFunction
- mnStartBroadcast
- mnGetLocalIPAmount
- mnGetLocalIP
- mnGetHostName

as well as this, there are some new data types in the packet formulation/deformulation system and a class for C++ users that can be used instead of the regular packet functions.


Let me know if I've missed anything out in the changes list and if you have any problems with the new version

GIDustin
12
Years of Service
User Offline
Joined: 30th May 2008
Location:
Posted: 19th Dec 2008 06:31
Just converted my game to the new version. Took forever to replace all those commands with the new packet system.

However, it works, so this is where I stop complaining.

I intend to use the same Send Packet for all 3 connections my game can use, so I set the memory size to 4096 as it should never be this high. Question: Is allocating too much memory bad? If so, how can I determine the right amount? I will never have a packet with more than 6 ints and 6 strings so if you could formulate an equation that would be very kind of you.
GIDustin
12
Years of Service
User Offline
Joined: 30th May 2008
Location:
Posted: 19th Dec 2008 07:28
I spoke too soon.

While connected to my MP Lobby, I created a non-blocking connection to the same ip with a different port. This should have connected to a game server. After the standard timeout, mn Poll Connect() returned -1. Get Error returned "library routine called out of sequence".

Any thoughts?
Michael P
14
Years of Service
User Offline
Joined: 6th Mar 2006
Location: London (UK)
Posted: 19th Dec 2008 10:50 Edited at: 19th Dec 2008 23:04
Quote: "Just converted my game to the new version. Took forever to replace all those commands with the new packet system. "

Sorry, this will be the last major change to MikeNet in terms of usage

Quote: "I intend to use the same Send Packet for all 3 connections my game can use, so I set the memory size to 4096 as it should never be this high. Question: Is allocating too much memory bad? If so, how can I determine the right amount? I will never have a packet with more than 6 ints and 6 strings so if you could formulate an equation that would be very kind of you. "

It is only bad if the computer your application is running on has very little RAM. MikeNet only sends what is in the packet (up to the used size), not the entire memory size.

Quote: "While connected to my MP Lobby, I created a non-blocking connection to the same ip with a different port. This should have connected to a game server. After the standard timeout, mn Poll Connect() returned -1. Get Error returned "library routine called out of sequence"."


That is odd. Here is an example of how to connect non blocking in DBP. Is your code done in the same way? If so, please post a code snippet and I'll try and find out whats wrong:



[edit]
Didn't read this part:
Quote: "so if you could formulate an equation that would be very kind of you"

integers are 4 bytes and strings are 4 bytes + the length of the string (unless you don't have a prefix, but I assume you do).

So the formula for determining the memory size of your packet is:
(4*6)+(4*6)+Total strings' lengths
KISTech
13
Years of Service
User Offline
Joined: 8th Feb 2008
Location: Aloha, Oregon
Posted: 19th Dec 2008 19:16
Quote: "Sorry, this will be the last major change to MikeNet in terms of usage "


That puts this one step closer to being the new networking plugin for Worlds Apart Online.

AlexI
16
Years of Service
User Offline
Joined: 31st Dec 2004
Location: UK
Posted: 21st Dec 2008 17:19
Any chance of packet encryption/decryption function?

Michael P
14
Years of Service
User Offline
Joined: 6th Mar 2006
Location: London (UK)
Posted: 21st Dec 2008 17:54
Perhaps, although I think it goes beyond the scope of MikeNet. You can do encryption/decryption yourself in C++. This can be done manually using your own code, or you can use a third party encryption library. There are two ways of encrypting the packet's contents manually:

Firstly, you can change the contents of the packet using GetString and AddString commands. This doesn't work with DBP, perhaps because of the way DBP deals with strings. Below is a code example; at the point: "// **Encrypt contents**" you encrypt the data of PacketContents.


Secondly, you can manipulate the variables of the clPacket class directly. Key variables include: sData, iCursorPos, iMemSize and UsedSize. sData is where the packet data is stored.
AlexI
16
Years of Service
User Offline
Joined: 31st Dec 2004
Location: UK
Posted: 21st Dec 2008 21:17
I see, using oop now What about built in function Packet.Encyrpt(key) and Pack.Decrypt(key) . It could encypt using blowfish encryption

Michael P
14
Years of Service
User Offline
Joined: 6th Mar 2006
Location: London (UK)
Posted: 21st Dec 2008 21:50
Quote: "I see, using oop now"

Just with packets, although it is optional ; you can create and manipulate packets using the equivalent mnCreatePacket/mnDeletePacket and mnAdd/mnGet commands.

I will look into doing encryption/decryption at some point
AlexI
16
Years of Service
User Offline
Joined: 31st Dec 2004
Location: UK
Posted: 21st Dec 2008 23:07
GIDustin
12
Years of Service
User Offline
Joined: 30th May 2008
Location:
Posted: 23rd Dec 2008 07:12
Michael P

Thanks again for the plugin, it is working great. This week I am adding LAN support to my game so I will let you know how that goes.

Also, when I download your files, the EXEs are infected with ADSPY/AdSpy.Gen, some kind of spyware. Since I don't use the EXEs to install, I just ignored it, but it is something you might wanna check into.
Michael P
14
Years of Service
User Offline
Joined: 6th Mar 2006
Location: London (UK)
Posted: 23rd Dec 2008 12:46 Edited at: 23rd Dec 2008 13:06
Quote: "Also, when I download your files, the EXEs are infected with ADSPY/AdSpy.Gen, some kind of spyware. Since I don't use the EXEs to install, I just ignored it, but it is something you might wanna check into."


What anti virus are you using? I scanned the files with AVG 8.0 and it didn't find anything.

[edit]Am I right in thinking you are using "Avira AntiVir"? I just went to http://scanner.virus.org to scan with lots of different anti virus software and only Avira found an infection:


Perhaps Avira has made a mistake, but I will post on the geek culture board and see what other people think
GIDustin
12
Years of Service
User Offline
Joined: 30th May 2008
Location:
Posted: 23rd Dec 2008 15:11
Lavasoft's Anti-Virus Helix

http://www.lavasoft.com/products/lavasoft_antivirus_helix.php

It is based on the Avira engine though. And I checked their site on the adware: http://www.avira.com/en/threats/section/fulldetails/id_vir/3906/adspy_adspy.gen.html. This one looks pretty harmless.
XFS Illusion
14
Years of Service
User Offline
Joined: 20th Apr 2006
Location:
Posted: 26th Dec 2008 20:22
Hey, will this work with DarkGDK.NET?

Michael P
14
Years of Service
User Offline
Joined: 6th Mar 2006
Location: London (UK)
Posted: 27th Dec 2008 19:11
Not yet, although I am going to be working on a compatible version in the future
monotonic
14
Years of Service
User Offline
Joined: 24th Mar 2006
Location: Nottinghamshire, England
Posted: 28th Dec 2008 22:54 Edited at: 28th Dec 2008 22:55
I'm not sure if this has been asked previously, but is this tied in anyway to DBP. What I mean is does it rely on any internal stuff of DBP.

If it's just a dll I could write a module for BlitzMax for you.

WARNING! The author of this post is most probably drunk or asleep.
Michael P
14
Years of Service
User Offline
Joined: 6th Mar 2006
Location: London (UK)
Posted: 29th Dec 2008 16:26 Edited at: 29th Dec 2008 16:27
@ monotonic
It is not, although the DBP DLL has some DBP specific things added in for compatibility.

It would probably be easier to maintain if I wrote the module myself. Do you know of a guide to creating BlitzMax modules in C++? If not, could you possibly write a brief explanation of how to do so?

@ all
I think it is reasonable to conclude that Avira's (anti virus software) warning that MikeInstall (program used to install MikeNet) is infected with ADSPY/AdSpy.Gen is wrong. Only MikeInstall is shown to be infected and even when recompiled the results are the same.

I have finished writing encryption code that uses Advanced Encryption Standard and am now incorporating it into MikeNet.

As well as this MikeNet will soon be usable in other languages including BlitzMax and CLR based languages such as .Net and C#.
AlexI
16
Years of Service
User Offline
Joined: 31st Dec 2004
Location: UK
Posted: 30th Dec 2008 21:53
Quote: "I have finished writing encryption code that uses Advanced Encryption Standard and am now incorporating it into MikeNet."


Yay, you will defiantly be in the credits on my game!

AlexI
16
Years of Service
User Offline
Joined: 31st Dec 2004
Location: UK
Posted: 31st Dec 2008 02:49
How much faster is MikeNet 1.0.9 vs MikeNet1.0.6 for c++??

Michael P
14
Years of Service
User Offline
Joined: 6th Mar 2006
Location: London (UK)
Posted: 31st Dec 2008 20:15
Quote: "How much faster is MikeNet 1.0.9 vs MikeNet1.0.6 for c++??"

That depends on how you use MikeNet. Pretty much everything is at least slightly faster but TCP receiving sees a big increase in performance. If you use mnSetFunction (new to v1.0.9) performance can be further increased.

Quote: "Yay, you will defiantly be in the credits on my game!"

Thanks, my full name is Michael Pryor
kaedroho
13
Years of Service
User Offline
Joined: 21st Aug 2007
Location: Oxford,UK
Posted: 31st Dec 2008 21:21 Edited at: 31st Dec 2008 21:23
Im already changing some of my games to use MikeNet. Great Work!

Michael P
14
Years of Service
User Offline
Joined: 6th Mar 2006
Location: London (UK)
Posted: 2nd Jan 2009 17:50 Edited at: 23rd Jan 2009 19:28
v1.1.0
New to this version are a few minor changes and a nice new feature: packet encryption/decryption

Packet Encryption
New packet encryption commands include:
-mnCreateKey256
-mnCreateKey192
-mnCreateKey128
-mnDeleteKey
-mnEncrypt
-mnDecrypt
-mnSetDecryptUDP

Details of how to use these commands are documented.

Minor changes
Error messages that could occur when using a MikeNet command are now documented.

Several commands now have a return value of integer (where they previously had no return value):
-mnSetFunction
-mnFinish
-mnDisconnectClient
-mnSetServerTimeout
-mnDisableUDP
-mnStopConnect

mnGetUDPEnabled now returns integer instead of bool.

mnGetLocalIP now takes a parameter of unsigned integer instead of signed to bring it in line with mnGetLocalIPAmount's return value.

It is now harder to crash MikeNet without an error message appearing first. Previously it was possible to crash MikeNet by using commands incorrectly.

As always, let me know if you have any trouble with this new version
KISTech
13
Years of Service
User Offline
Joined: 8th Feb 2008
Location: Aloha, Oregon
Posted: 2nd Jan 2009 19:28
Dude! Awesome stuff!!!

AlexI
16
Years of Service
User Offline
Joined: 31st Dec 2004
Location: UK
AlexI
16
Years of Service
User Offline
Joined: 31st Dec 2004
Location: UK
Posted: 3rd Jan 2009 22:21 Edited at: 3rd Jan 2009 23:05
What encryption method did you use in the end?

Edit:

I have just upgraded from MikeNet1.0.6 to MikeNet1.1.0 and i get this error:



Any idea why? Is it a bug?

I get this error when I try to make a client connection to server in the server program

Thanks,
Alex

Attachments

Login to view attachments
Michael P
14
Years of Service
User Offline
Joined: 6th Mar 2006
Location: London (UK)
Posted: 3rd Jan 2009 23:17 Edited at: 3rd Jan 2009 23:18
Advanced Encryption Standard is used.

The error suggests that the UDP connect IP used with mnConnect is invalid. If the cube world pro demo works on your computer then I don't think this is a bug in MikeNet. If you provide some code I can see if there is anything wrong.
AlexI
16
Years of Service
User Offline
Joined: 31st Dec 2004
Location: UK
Posted: 4th Jan 2009 00:11 Edited at: 4th Jan 2009 00:22
I have discovered the problem is that in the old version I could locally connect to the IP 127.0.0.1 however this does not work in the latest version I must connect to the actual external ip e.g 192.168.1.28. I have changed my code to get the local IP and use this instead of 127.0.0.1

Alex

AlexI
16
Years of Service
User Offline
Joined: 31st Dec 2004
Location: UK
Posted: 4th Jan 2009 00:31 Edited at: 4th Jan 2009 00:32
Thanks for the update, I got it working! There is a massive performance increases!! Before I got about 20-30fps, now i get between 50-60 Thanks for making this, it is really appreciated!
Alex

Michael P
14
Years of Service
User Offline
Joined: 6th Mar 2006
Location: London (UK)
Posted: 4th Jan 2009 02:40 Edited at: 4th Jan 2009 13:34
@ AlexI
Glad to hear it . Not being able to use 127.0.0.1 when MikeNet finds a local IP is new since I fixed the bug:"mnGetLocalIP returned 0.0.0.0 when MikeNet allocates the IP automatically in server state". However, if you want to use 127.0.0.1 you can bind the server directly to it using mnSetLocal.

@ DarkBASIC Pro users
I have released version 1.1.0 build 2 which only affects DBP users. The reason for this change is to improve ease of use for DBP users. The internal code is identical to build 1 and the C++ version has not changed at all.

You can now use the following commands as if they do not have a return value:


The documentation has been updated with a note explaining this for each of the above commands and the .ini file has been changed to display curly brackets {} to indicate the option of not using normal brackets. The .ini file is used by your DBP editor when displaying some basic information about the command e.g. mnAddInt now looks like: MN ADD INT{Packet, Integer}

The reason for this change is that the return value of these commands only indicate whether or not an error occurred. If error message boxes are enabled you may want to ignore the return value.

Here is an example demonstrating what the change means. Both the below examples of mnAddInt are valid and do the same thing. The first example is what you previously had to do. The second example demonstrates how you can now use the previously listed commands:


You can download build 2 here:
Version 1.1.0 Build 2 (Mirror 1)
Version 1.1.0 Build 2 (Mirror 2)

@ All
If you have any suggestions of features that you would like to see in MikeNet feel free to post them here, suggestions are appreciated

I will probably be spending my programming time over the next few weeks focusing on increasing the number of languages that MikeNet is compatible with. If there is a language that you want MikeNet to be compatible with that is not on the list in the first post of this thread under 'Future plans' then please feel free to let me know.
AlexI
16
Years of Service
User Offline
Joined: 31st Dec 2004
Location: UK
Posted: 4th Jan 2009 03:36
You can always improve its speed Though its pretty fast now I have upgraded

Mr Bigger
16
Years of Service
User Offline
Joined: 31st Jan 2005
Location: was here!
Posted: 7th Jan 2009 21:35
When i run the demos in DBPro i get the attached errors.
Any ideas?

AMD 2600+/1GB ram/GeForce 6600oc 256MB/W2KPro/DBPro 6.6.b

Attachments

Login to view attachments
KISTech
13
Years of Service
User Offline
Joined: 8th Feb 2008
Location: Aloha, Oregon
Posted: 7th Jan 2009 23:19
In DBP the command

Err$ = mn Get Error Full()

Returns nothing.

Michael P
14
Years of Service
User Offline
Joined: 6th Mar 2006
Location: London (UK)
Posted: 8th Jan 2009 00:06 Edited at: 21st May 2009 14:41
Quote: "You can always improve its speed Though its pretty fast now I have upgraded"

There may be some performance improvements in the future, but nothing as significant as seen in previous updates.

Quote: "When i run the demos in DBPro i get the attached errors.
Any ideas?"

Am I right in thinking you are using an operating system older than windows XP? If so, then the attached version should work. Please let me know whether or not it works


Quote: "In DBP the command

Err$ = mn Get Error Full()

Returns nothing."

If message boxes are enabled (they are by default) the mnGetError commands cannot be used. You can use mnDisableMessageBoxes and mnEnableMessageBoxes to disable/enable message boxes.

The below code works for me where mnDNS causes an error because MikeNet has not been started:


mnGetErrorFull also returns an empty string if no error has occurred since the last mnClearError (or since the program started if mnClearError was not used).

Mr Bigger
16
Years of Service
User Offline
Joined: 31st Jan 2005
Location: was here!
Posted: 8th Jan 2009 05:51
Excellent!Works great with W2k.

Thanks Mike.

AMD 2600+/1GB ram/GeForce 6600oc 256MB/W2KPro/DBPro 6.6.b
Michael P
14
Years of Service
User Offline
Joined: 6th Mar 2006
Location: London (UK)
Posted: 8th Jan 2009 21:15 Edited at: 8th Jan 2009 21:15
Version 1.1.0 Build 3
MikeNet applications now work on versions of windows older than XP.
Version 1.1.0 Build 3 (Mirror 1)
Version 1.1.0 Build 3 (Mirror 2)

Mr Bigger you do not need to download this, the version I attached to my last post is identical to this.
AlexI
16
Years of Service
User Offline
Joined: 31st Dec 2004
Location: UK
Posted: 8th Jan 2009 22:25
kaedroho
13
Years of Service
User Offline
Joined: 21st Aug 2007
Location: Oxford,UK
Posted: 9th Jan 2009 21:43
Will i beable to use the DBPro version with the C++ version? Im writing the server in C++ and the client in DBP.

KISTech
13
Years of Service
User Offline
Joined: 8th Feb 2008
Location: Aloha, Oregon
Posted: 9th Jan 2009 21:52 Edited at: 9th Jan 2009 23:59
The command

mn Finish

Seems to be taking a VERY long time to complete, and it takes hold of the entire system while it's doing it. (mouse moves, but no ability to click on the taskbar or anything else.)

I had considered the possibility that it was my code, but it's also doing it with the CubeWorld demo.

[edit] Nevermind, I rebooted and the issue seems to have gone away.

kaedroho
13
Years of Service
User Offline
Joined: 21st Aug 2007
Location: Oxford,UK
Posted: 10th Jan 2009 01:15
Ok, im trying to start a server now. but i keep getting this error:


I get it with all the functions i use.

Im using Visual C++ 2005 Professional.

Michael P
14
Years of Service
User Offline
Joined: 6th Mar 2006
Location: London (UK)
Posted: 10th Jan 2009 17:24 Edited at: 10th Jan 2009 17:26
@ kaedroho
You can use MikeNet versions of the same number (e.g. 1.1.0) with each other regardless of what language they are for

You need to setup your project properly; the following libraries must be included: WS2_32.lib, MikeNet.lib. You can do this by adding this to the top of your code:
kaedroho
13
Years of Service
User Offline
Joined: 21st Aug 2007
Location: Oxford,UK
Posted: 11th Jan 2009 12:46 Edited at: 11th Jan 2009 12:46
Done that and now those errors are gone. Thanks for your help . But now I get another error:



Alfa x
14
Years of Service
User Offline
Joined: 1st Jul 2006
Location: Colombia
Posted: 11th Jan 2009 18:09 Edited at: 11th Jan 2009 18:12
hi Mike,
first of all thank you for this wonderful plug-in. It makes very easy the development and I'm very happy about it. .

------

Second,
i would like to ask you questions about your plug-in. (sorry if this questions have already been asked, i actually reading the thread of MikeNet)
i'm using the cubeworld example.


1) When i use mnstart I set the number of cores the application is using. Is there a way to specify which core to use?, is there a way to know wich core is using Darkbasic to use the other core (or cores) for mike net?

2) How i could minimize the communication with the server to minimize overhead?, is there a way to admin connections and then to let all the communication details to the clients (FOr example in a RTS game)?. This is to minimize server overhead.

3) How I could use the same port for all clients, for example in starcraft when you connect yourself to the battle.net,you use the same port to connect to the server independently of how many computers connect. As far as i know, if you open to many ports you can have a security problem. Is there a way to do it with MikeNet? if yes, can you please explain me how?, it could get congested?

When i try to use the same port i get the following errors(atached as a image at the end of this post). The errors are put in order of appearance from up to down. It asks me if I want to exit and i say "no", although it still works with various cubes (clients) and i don't know if it is safe.

I put in the cube world example the values of the port with "mn set local".

4) Do you know how I end the Darkbasic application in c++, when doing a dll for darkbasic if an error is triggered?.

Attachments

Login to view attachments
Michael P
14
Years of Service
User Offline
Joined: 6th Mar 2006
Location: London (UK)
Posted: 11th Jan 2009 18:49 Edited at: 11th Jan 2009 18:59
@ kaedroho
This is probably an issue with project settings again. Included in the MikeNet zip folder are full working projects for VS 2008. If you are unable to open this in VS 2005, you could attach your project and I could have a look at the settings.

@ Alfa x
I'll do my best to answer your questions, let me know if I misunderstood any of them.

Quote: "1) When i use mnstart I set the number of cores the application is using. Is there a way to specify which core to use?, is there a way to know wich core is using Darkbasic to use the other core (or cores) for mike net?"

Not currently. I believe if for example if you have a duel core processor and you create two threads, the first thread will use the first core and the second thread will use the second core. I may add an option to set affinity of threads in the next version. You can however set the affinity for the entire application using windows task manager; this can be done on XP by right clicking the process and selecting set affinity.

Quote: "2) How i could minimize the communication with the server to minimize overhead?, is there a way to admin connections and then to let all the communication details to the clients (FOr example in a RTS game)?. This is to minimize server overhead."

Am I right in thinking your question is: Is it possible for clients to communicate directly with each other without going through the server? The answer is yes, but not easily.

I have not attempted this before, but off the top of my head I would achieve this by giving each client three or more instances. 1. mnConnect to main server, 2. mnStartServer to receive data from other clients, 3+. mnConnects to other clients. Upon connection to the main server, the server sends the client's information to all other clients so that they can connect to the new client.

Quote: "3) How I could use the same port for all clients, for example in starcraft when you connect yourself to the battle.net,you use the same port to connect to the server independently of how many computers connect. As far as i know, if you open to many ports you can have a security problem. Is there a way to do it with MikeNet? if yes, can you please explain me how?, it could get congested?

When i try to use the same port i get the following errors(atached as a image at the end of this post). The errors are put in order of appearance from up to down. It asks me if I want to exit and i say "no", although it still works with various cubes (clients) and i don't know if it is safe.

I put in the cube world example the values of the port with "mn set local"."

The errors should cause data transfer on that instance to be impossible, since the sockets were not set up correctly.

It is not currently possible to setup an mnConnect or mnStartServer that have the same local port. It may be possible for me to make this possible in the future though; however, if they are both on the same local port they would both receive the same data which is probably not desirable.

Quote: "4) Do you know how I end the Darkbasic application in c++, when doing a dll for darkbasic if an error is triggered?. "

Yes, the below thread should answer the question:
http://forum.thegamecreators.com/?m=forum_view&t=127872&b=22

Basically, you can use PostQuitMessage or exit, MikeNet uses exit.

@ All
Work on the .Net version of MikeNet is coming along nicely, here is some sample server and client cube world code for C#. Note that it may change before release. I will also be converting the demos into VB.Net:

Client


Server
kaedroho
13
Years of Service
User Offline
Joined: 21st Aug 2007
Location: Oxford,UK
Posted: 11th Jan 2009 19:05 Edited at: 11th Jan 2009 19:08
Quote: "This is probably an issue with project settings again. Included in the MikeNet zip folder are full working projects for VS 2008. If you are unable to open this in VS 2005, you could attach your project and I could have a look at the settings."


My visual studio wont open properties. I get:

Failed to create .NET Frameworks PropertyGrid component.
Please verify the Common Language Runtime and .NET Frameworks are properly installed.

Reinstalled .NET Framework. But i still get it. Im going to find the VS cds and reinstall the whole thing again.

Michael P
14
Years of Service
User Offline
Joined: 6th Mar 2006
Location: London (UK)
Posted: 11th Jan 2009 19:44
The C++ version of MikeNet is designed for use with unmanaged C++, not for CLR. You could try visual studio 2008 express edition as it is free.
kaedroho
13
Years of Service
User Offline
Joined: 21st Aug 2007
Location: Oxford,UK
Posted: 11th Jan 2009 22:00
Downloading VS 2008 express.

Alfa x
14
Years of Service
User Offline
Joined: 1st Jul 2006
Location: Colombia
Posted: 11th Jan 2009 22:43
Thanks for your quick answer, it was superb

Quote: "Not currently. I believe if for example if you have a duel core processor and you create two threads, the first thread will use the first core and the second thread will use the second core. I may add an option to set affinity of threads in the next version. You can however set the affinity for the entire application using windows task manager; this can be done on XP by right clicking the process and selecting set affinity."


I look forward to the next version.

Do I have a way to know wich thread i'm using and a way of using it, to know which thread to use?

Quote: "have not attempted this before, but off the top of my head I would achieve this by giving each client three or more instances. 1. mnConnect to main server, 2. mnStartServer to receive data from other clients, 3+. mnConnects to other clients. Upon connection to the main server, the server sends the client's information to all other clients so that they can connect to the new client."


I will try and tell you the results. Since I'm new at this, I will show everything I will do mainly because i'm prone to make mistakes.


Quote: "It is not currently possible to setup an mnConnect or mnStartServer that have the same local port. It may be possible for me to make this possible in the future though; however, if they are both on the same local port they would both receive the same data which is probably not desirable."


You have all the reason in this.

So, can multiple clients in different computers, in different places, connect to the same server through the same port (for example 6112)?

Thanks
Michael P
14
Years of Service
User Offline
Joined: 6th Mar 2006
Location: London (UK)
Posted: 11th Jan 2009 23:50
Quote: "Do I have a way to know wich thread i'm using and a way of using it, to know which thread to use?"

I'm not sure I understand the question but I'll have a go at answering anyway. The threads are used internally by MikeNet and instances share these threads. You don't need to interact with these threads, MikeNet handles them for you.

Quote: "I will try and tell you the results. Since I'm new at this, I will show everything I will do mainly because i'm prone to make mistakes."

Good luck

Quote: "So, can multiple clients in different computers, in different places, connect to the same server through the same port (for example 6112)?"

Yes, the same local IP and port can be used by different computers to connect to the same server. However the same local IP and port cannot be used by two instances on the same computer at the same time.
Benjamin
18
Years of Service
User Offline
Joined: 24th Nov 2002
Location: France
Posted: 12th Jan 2009 03:17
Quote: "However the same local IP and port cannot be used by two instances on the same computer at the same time. "

Of course, this is only true for UDP.

Alfa x
14
Years of Service
User Offline
Joined: 1st Jul 2006
Location: Colombia
Posted: 12th Jan 2009 06:26
Quote: "I'm not sure I understand the question but I'll have a go at answering anyway. The threads are used internally by MikeNet and instances share these threads. You don't need to interact with these threads, MikeNet handles them for you."


So all instances of MikeNet shares the two threads the processor can handle supposing a dual core ship. Thanks for clearing it

Login to post a reply

Server time is: 2021-02-27 22:39:22
Your offset time is: 2021-02-27 22:39:22