多说一句,您还2003呢?至少也换2008吧。。。win7旗舰版也可以阿。。。2003早停服务了,一堆漏洞,很容易被攻击的其默认设置应该是“InProc”,在WEBCONFIG中有这样一个注释:“
<!-- If you are deploying to a cloud environment that has multiple web server instances,
you should change session state mode from "InProc" to "Custom" In addition,
change the connection string named "DefaultConnection" to connect to an instance
of SQL Server (including SQL Azure and SQL Compact) instead of to SQL Server Express -->
”
因为不知道你设置StateServer的用意,以及之前默认状态是否可以Post提交,所以,建议你了解一下设置StateServer的介绍,然后再做修改:
“将mode属性设为StateServer,也就是将会话数据存储到单独的内存缓冲区中,再由单独一台机器上运行的Windows服务来控制这个缓冲区。状态服务全称是“ASPNET State Service ”(aspnet_stateexe),它由Webconfig文件中的stateConnectionString属性来配置。该属性指定了服务所在的服务器,以及要监视的端口:
<sessionState mode="StateServer" stateConnectionString="tcpip=myserver:42424" cookieless="false" timeout="20" />在这个例子中,状态服务在一台名为myserver的机器的42424端口(默认端口)运行。要在服务器上改变端口,可编辑HKLM/SYSTEM/CurrentControlSet/Services/aspnet_state注册表项中的Port值。显然,使用状态服务的优点在于进程隔离,并可在Web farm中共享。 使用这种模式,会话状态的存储将不依赖于iis进程的失败或者重启,然而,一旦状态服务中止,所有会话数据都会丢失。换言之,状态服务不像SQL Server那样能持久存储数据;它只是将数据存储在内存中。
UDP服务器:
using SystemText;
using SystemNet;
using SystemNetSockets;
namespace ConsoleUdpServer
{
class Program
{
static void Main(string[] args)
{
Socket socket = new Socket(AddressFamilyInterNetwork,
SocketTypeDgram,
ProtocolTypeUdp);
EndPoint localEP = new IPEndPoint(IPAddressParse("127001"), 8002);
socketBind(localEP);
//启动异步接收
State state = new State(socket);
socketBeginReceiveFrom(
stateBuffer, 0, stateBufferLength,
SocketFlagsNone,
ref stateRemoteEP,
EndReceiveFromCallback,
state);
ConsoleReadLine();
socketClose();
}
//异步接收回调函数
static void EndReceiveFromCallback(IAsyncResult iar)
{
State state = iarAsyncState as State;
Socket socket = stateSocket;
try
{
//完成接收
int byteRead = socketEndReceiveFrom(iar, ref stateRemoteEP);
//显示客户端地址和端口
ConsoleWriteLine("客户端终结点:{0}", stateRemoteEPToString());
//显示接收信息
ConsoleWriteLine("接收数据字节数:{0}", byteRead);
string message = EncodingDefaultGetString(stateBuffer, 0, byteRead);
ConsoleWriteLine("来着客户端信息:{0}", message);
//向客户端发送信息
SendMeaage(socket, stateRemoteEP, "成功接收!");
}
catch (Exception e)
{
ConsoleWriteLine("发生异常!异常信息:");
ConsoleWriteLine(eMessage);
}
finally
{
//非常重要:继续异步接收
socketBeginReceiveFrom(
stateBuffer, 0, stateBufferLength,
SocketFlagsNone,
ref stateRemoteEP,
EndReceiveFromCallback,
state);
}
}
/// <summary>
/// 向客户端发送信息
/// </summary>
/// <param name="socket">本地Socket(服务器Socket)</param>
/// <param name="remoteEndPoint">客户端终结点</param>
/// <param name="Message">信息</param>
static void SendMeaage(Socket socket, EndPoint remoteEndPoint, string Message)
{
byte[] bytes = EncodingDefaultGetBytes(Message);
socketSendTo(bytes, remoteEndPoint);
}
}
/// <summary>
/// 用于异步接收处理的辅助类
/// </summary>
class State
{
public State(Socket socket)
{
thisBuffer = new byte[1024];
thisSocket = socket;
thisRemoteEP = new IPEndPoint(IPAddressAny, 0);
}
/// <summary>
/// 获取本机(服务器)Socket
/// </summary>
public Socket Socket { get; private set; }
/// <summary>
/// 获取接收缓冲区
/// </summary>
public byte[] Buffer { get; private set; }
/// <summary>
/// 获取/设置客户端终结点
/// </summary>
public EndPoint RemoteEP;
}
}
UDP客户端
using System;using SystemText;
using SystemNet;
using SystemNetSockets;
namespace ConsoleUdpClient
{
class Program
{
static void Main(string[] args)
{
Socket socket = new Socket(AddressFamilyInterNetwork,
SocketTypeDgram,
ProtocolTypeUdp);
//客户端使用的终结点
EndPoint localEP = new IPEndPoint(IPAddressAny, 0);
socketBind(localEP);
//启动异步接收
State state = new State(socket);
socketBeginReceiveFrom(
stateBuffer, 0, stateBufferLength,
SocketFlagsNone,
ref stateRemoteEP,
EndReceiveFromCallback,
state);
//向服务器发送信息
EndPoint remoteEP = new IPEndPoint(IPAddressParse("127001"), 8002);
SendMeaage(socket, remoteEP, "你好,这里是客户端,收到请回复!Over~~~~");
ConsoleReadLine();
socketClose();
}
//异步接收回调函数
static void EndReceiveFromCallback(IAsyncResult iar)
{
State state = iarAsyncState as State;
Socket socket = stateSocket;
try
{
//完成接收
int byteRead = socketEndReceiveFrom(iar, ref stateRemoteEP);
//显示服务器地址和端口
ConsoleWriteLine("服务器终结点:{0}", stateRemoteEPToString());
//显示接收信息
ConsoleWriteLine("接收数据字节数:{0}", byteRead);
string message = EncodingDefaultGetString(stateBuffer, 0, byteRead);
ConsoleWriteLine("来着服务器的信息:{0}", message);
}
catch (Exception e)
{
ConsoleWriteLine("发生异常!异常信息:");
ConsoleWriteLine(eMessage);
}
finally
{
//非常重要:继续异步接收
socketBeginReceiveFrom(
stateBuffer, 0, stateBufferLength,
SocketFlagsNone,
ref stateRemoteEP,
EndReceiveFromCallback,
state);
}
}
/// <summary>
/// 向服务器发送信息
/// </summary>
/// <param name="socket">本地Socket</param>
/// <param name="remoteEndPoint">服务器终结点</param>
/// <param name="Message">信息</param>
static void SendMeaage(Socket socket, EndPoint remoteEndPoint, string Message)
{
byte[] bytes = EncodingDefaultGetBytes(Message);
socketSendTo(bytes, remoteEndPoint);
}
}
/// <summary>
/// 用于异步接收处理的辅助类
/// </summary>
class State
{
public State(Socket socket)
{
thisBuffer = new byte[1024];
thisSocket = socket;
thisRemoteEP = new IPEndPoint(IPAddressAny, 0);
}
/// <summary>
/// 获取本机Socket
/// </summary>
public Socket Socket { get; private set; }
/// <summary>
/// 获取接收缓冲区
/// </summary>
public byte[] Buffer { get; private set; }
/// <summary>
/// 获取/设置客户端终结点
/// </summary>
public EndPoint RemoteEP;
}
}完全可以做到不关机或者0断电,首先,肯定需要用到外接电源UPS!
不同的主板设置不同,但是大概也就以下这些情况:
要实现来电开机的前提条件就是你的电脑电源所使用的ATX电源的5V待命电流不小于800mA。然后设置COMS。
下面根据不同的BIOS列出相应的设置方法:
情况一、首先进入BIOS的设置主界面,选择[POWER
MANAGEMENT
SETUP],再选择[PWR
Lost
Resume
State],这一项有三个选择项。
选择[Keep
OFF]项,代表停电后再来电时,电脑不会自动启动。
选择[Turn
On]项,代表停电后再来电时,电脑会自动启动。
选择的[Last
State],那么代表停电后再来电时,电脑恢复到停电前电脑的状态。断电前如果电脑是处于开机状态,那么来电后就会自动开机。断电前是处于关机状态,那么来电后电脑不会自动开机。
情况二、首先进入Power
Management
Setup(电源管理设定)→Power
Again(再来电状态),此项决定了开机时意外断电之后,电力供应恢复时系统电源的状态。设定值有:
Power
Off(保持系统处于关机状态)
Power
On(保持系统处于开机状态)
Last
State(恢复到系统断电前的状态)进入挂起/睡眠模式,但若按钮被揿下超过4秒,机器关机。
若想来电自动开机把上面的这项改成power
on就行了!
情况三、有的BIOS中[POWER
MANAGEMENT
SETUP]没有上面说的[PWR
Lost
Resume
State],可以在[PWRON
After
PWR-Fail]→[Integrated
Peripherals]选项中找到两个选项:ON(打开自动开机)和OFF(关闭自动开机),设置为OFF即可。
不同的主板及BIOS型号相对应的选项会有所不同,但我想应该会差不多,一般都在[POWER
MANAGEMENT
SETUP]这个选项中可以找到相应的设置选项!
好的服务器可以做到7X24小时不间断,一般也没很大的必要让服务器休息,如果服务器都休息了,还叫服务器吗?一般休息也就做一些除尘工作和一些必须断电更换硬件的时候休息一下本文采用 Json数据格式
目前由登录,心跳,数据透传3个接口组成
登录:
'{"companyID":"0","stateCode":"10001"}'
注释:companyID:为身份编号:服务器根据此字段将连接对象分组
stateCode : *** 作编号,登录固定为10001
返回数据:
'{"channelNumber":"1""stateCode":"10001","serialNumber":"1234","msg":"登录成功","dataType":"0","data":"XXXX"}'
注释:channelNumber:服务器分配的唯一身份码,断开后即失效
stateCode: *** 作编号,登录固定为10001
serialNumber: *** 作流水号
msg: *** 作提示
dataType: 0 没有数据 1 数据是字典类型 2 数据是数组类型
data:透传数据 格式自定义
心跳:
'{"companyID":"0","channelNumber":"1","stateCode":"10002"}'
注释: companyID:为身份编号:服务器根据此字段将连接对象分组
channelNumber:服务器分配的唯一身份码,断开后即失效
stateCode : *** 作编号,心跳固定为10002
返回数据:
'{"channelNumber":"1""stateCode":"10002","serialNumber":"1234","msg":"登录成功","dataType":"0","data":"XXXX"}'
注释:格式同上 修改对应参数即可
数据透传:
'{"channelNumber":"1","stateCode":"99999","serialNumber":"1234","msg":"数据透传","dataType":"1","data":{}}'
注释:channelNumber:服务器分配的唯一身份码,断开后即失效
stateCode: *** 作编号,透传时自定义
serialNumber: *** 作流水号
msg: *** 作提示
dataType: 0 没有数据 1 数据是字典类型 2 数据是数组类型
data:透传数据 格式自定义
透传示例:
'{"channelNumber":"1","stateCode":"99999","serialNumber":"1234","msg":"数据透传","dataType":"1","data":{"msgLevel":"1","msgType":"1","pageNumber":"1","title":"1","content":"1","imgUrl":"1","time":"1"}}'
注释: msgLevel :1-9 越高越重要
msgType : 1 通知类型信息 2 *** 作类型信息 3 预警类型信息 9 透传base64字典数据
pageNumber : web页面上对应的功能页面编码
title : 本次消息的标题
content : 本次消息的文本
imgUrl : 本次消息的
time : 本次消息的时间
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)