This guide will introduce how to create a simple command line socket application using SupperSocket application framework.
About SuperSocket: http://www.cnblogs.com/jzywh/archive/2010/06/09/supersocket.html
1. Create a new project named “EchoService” in a new empty solution
2. Add the project “SocketServiceCore”(which is belong to SuperSocket) into the solution, and then let the project “EchoService” reference it
3. Add session class and server class
EchoSession.cs
EchoSession
<
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
>
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
SuperSocket.SocketServiceCore;
namespace
EchoService
{
public
class
EchoSession : AppSession
<
EchoSession
>
{
private
SocketContext m_Context;
protected
override
void
OnClosed()
{
}
protected
override
void
OnInit()
{
m_Context
=
new
SocketContext();
}
public
override
void
SayWelcome()
{
SendResponse(
"
Welcome to EchoServer!
"
);
}
public
override
void
HandleExceptionalError(Exception e)
{
SendResponse(
"
Server side error occurred!
"
);
}
public
override
SocketContext Context
{
get
{
return
m_Context; }
}
}
}
EchoServer.cs
EchoServer
<
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
>
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
SuperSocket.SocketServiceCore;
namespace
EchoService
{
public
class
EchoServer : AppServer
<
EchoSession
>
{
public
override
bool
IsReady
{
get
{
return
true
; }
}
}
}
4. Add command class
ECHO.cs
ECHO
<
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
>
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
SuperSocket.SocketServiceCore.Command;
namespace
EchoService.Command
{
public
class
ECHO : ICommand
<
EchoSession
>
{
#region
ICommand<echosession> Members</echosession>
public
void
Execute(EchoSession session, CommandInfo commandData)
{
session.SendResponse(commandData.Param);
}
#endregion
}
}
5. Build the project “EchoService” and then copy outputted assemblies to the output dir of the project “SocketService” (provided by SupperSocket, build it in advance please)
6. Update app.config of SocketService to use EchoService
SuperSocket.SocketService.exe.config
<
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
>
xml version
=
"
1.0
"
encoding
=
"
utf-8
"
?>
<
configuration
>
<
configSections
>
<
section name
=
"
loggingConfiguration
"
type
=
"
Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging
"
/>
<
section name
=
"
socketServer
"
type
=
"
SuperSocket.SocketServiceCore.Configuration.SocketServiceConfig, SuperSocket.SocketServiceCore
"
/>
>
configSections
>
<
appSettings
>
<
add key
=
"
ServiceName
"
value
=
"
EchoService
"
/>
>
appSettings
>
<
socketServer
>
<
servers
>
<
add name
=
"
Default Echo Server
"
serviceName
=
"
EchoService
"
ip
=
"
Any
"
port
=
"
911
"
mode
=
"
Async
"
/>
>
servers
>
<
services
>
<
add serviceName
=
"
EchoService
"
baseAssembly
=
"
EchoService.EchoServer, EchoService
"
/>
>
services
>
>
socketServer
>
<
loggingConfiguration name
=
"
Logging Application Block
"
tracingEnabled
=
"
true
"
defaultCategory
=
""
logWarningsWhenNoCategoriesMatch
=
"
true
"
>
//
Log configuration
>
loggingConfiguration
>
>
configuration
>
Please note the "socketServer" node in above code.
7. Click “RunServer.bat” and then enter “start” to start the server, then you can test the echo server by telnet (you also can click "InstallService.bat" to intsall the server application as windows service, the service name is defined in appSetting of app.config with the key "ServiceName")