网络端口为什么阻塞了
string text1 = Dns.GetHostName();
IPHostEntry entry1 = new IPHostEntry();
entry1 = Dns.Resolve(text1);
IPAddress address1 = entry1.AddressList[0];
//IPAddress address1=IPAddress.Parse("127.0.0.1");
this.Server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
this.Server.Bind(new IPEndPoint(address1,23344));
this.Server.Listen(200);
this.Server.BeginAccept(new AsyncCallback(this.acConnection), this.Server);
这是开始调用acConnection的部分,其中acConnection声明如下
private void acConnection(IAsyncResult ar)
{
Console.WriteLine("acConnection23344 connectioned!");
Socket server = (Socket) ar.AsyncState;
Socket client = server.EndAccept(ar);
try
{
byte[] bufferslength=new byte[2];
client.Receive(bufferslength,0,2,SocketFlags.Partial);
byte [] buffers=new byte[2000];
int bufferlength1=client.Receive(buffers);
//Console.WriteLine("bufferlength1:{0},buffers[0][1]={1}",bufferlength1,bufferslength[1]*256+bufferslength[0]);
if(bufferlength1 >2 &&(bufferlength1==bufferslength[1]*256+bufferslength[0]))
{
//Console.WriteLine("Received:{0}",BitConverter.ToString(buffers,0,bufferlength1));
//Console.WriteLine("bufferlength1={0:x2};buffers[0]={1:x2}",bufferlength1,buffers[0]);
byte[] bytereceived=new byte[bufferlength1/2];
for(int i=0;i<bytereceived.Length;i++){
bytereceived[i]=Convert.ToByte(buffers[i*2]^0x0b);
}
//Console.WriteLine("Received2:{0}",BitConverter.ToString(bytereceived));
byte[] bytedereceived=Base64.Base64Decode(Encoding.ASCII.GetString(bytereceived));
//Console.WriteLine("deReceived:{0}",BitConverter.ToString(bytedereceived));
String strde=Encoding.ASCII.GetString(bytedereceived);
//Console.WriteLine("deReceived:{0}",strde);
//Regex reg=new Regex(@"([\S]*[\s]*)([\S]{32})([\S]+)",RegexOptions.Multiline);
Regex reg=new Regex(@"([\S]{32})([\s]*)([\S]*)([\s]*)([\S]*)");
Match m=reg.Match(strde);
//Console.WriteLine("m.Groups.Count:{0}",m.Groups.Count);
if(m.Groups.Count==6){
//for(int i=1;i<6;i++){
//Console.WriteLine("index[{0}].Captures={1};Value={2}",i,m.Groups[i].Captures,m.Groups[i].Value);
//}
String strKey=m.Groups[5].Value.Trim();
String strAccount=m.Groups[3].Value.Trim();
byte[] byteDeKey=Base64.Base64Decode(strKey);
//Console.WriteLine("bytedeKey:{0}",BitConverter.ToString(byteDeKey));
//Console.WriteLine("Account:{0}",strAccount);
SqlConnection conn=new SqlConnection(this.Connstring);
SqlCommand cmd=new SqlCommand();
cmd.Connection=conn;
cmd.CommandType=CommandType.Text;
SqlParameter param=new SqlParameter("@account",strAccount);
param.SqlDbType=SqlDbType.NVarChar;
param.Size=50;
param.Direction=ParameterDirection.Input;
cmd.Parameters.Add(param);
conn.Open();
cmd.CommandText="update account set logindate=getdate() where account=@account";
cmd.ExecuteNonQuery();
cmd.CommandText="select account from account where account=@account and datediff(ss,validatedate,Getdate())<0";
SqlDataReader sdr=cmd.ExecuteReader(CommandBehavior.CloseConnection);
if(sdr.Read())
{
//byte[] byteDeKey=Base64.Base64Decode(strKey);
//Console.WriteLine("bytedeKey:{0}",BitConverter.ToString(byteDeKey));
//Console.WriteLine("Account:{0}",strAccount);
byte[] byte2=new byte[]{0x18,0x00,0x0d,0xFC,0x33,0x10,0x00,0xEC,0xB5,0xBE,0x03,0xD4,0x00,0xED,0x00,0x51,0x00,0x06,0x47,0x45,0xC7,0x4D,0xff,0x99,0xff,0x25};
byte[] byte3=new byte[]{0x40,0x00,0xB7,0x8E
,0xC1,0x51,0xC1,0x65,0xC2,0x53,0xB5,0x05,0xC6,0x5C,0xC6,0x33,0xC3,0xEC,0xB7,0x3F
,0xB0,0x54,0xC3,0x16,0xC3,0xA7,0xC0,0x22,0xB5,0xCD,0xC6,0xCC,0xB2,0x8F,0xB7,0x60
,0xB7,0xD4,0xC9,0xF3,0xC7,0x4E,0xC2,0x4A,0xC7,0x60,0xB7,0x3D,0xC5,0xCB,0xC3,0xEE
,0xB7,0x2F,0xC7,0x68,0xB4,0x16,0xC0,0x75,0xB3,0x93,0xB4,0x6D,0xC2,0x35
};
byte[] bytekeys=new byte[8];
bytekeys[0]=byteDeKey[1];
bytekeys[1]=byteDeKey[2];
bytekeys[2]=byteDeKey[3];
bytekeys[3]=byteDeKey[4];
bytekeys[4]=0xe2;
bytekeys[5]=0xd7;
bytekeys[6]=0x0f;
bytekeys[7]=0x93;
//Console.WriteLine("bytekeys:{0}",BitConverter.ToString(bytekeys));
blowfish bf=new blowfish();
byte[] bytede1=bf.Initialize(bytekeys);
byte[] byte1=new byte[bytede1.Length*2];
for(int i=0;i<bytede1.Length;i++)
{
byte1[i*2]=bytede1[i];
}
//Console.WriteLine("byte1:{0}",BitConverter.ToString(byte1));
//Console.WriteLine("byte2:{0}",BitConverter.ToString(byte2));
//Console.WriteLine("byte3:{0}",BitConverter.ToString(byte3));
int relength=2+byte1.Length+byte2.Length+byte3.Length;
byte[] rebyte=new byte[relength+2];
rebyte[0]=Convert.ToByte(relength%256);
rebyte[1]=Convert.ToByte(relength/256);
rebyte[2]=Convert.ToByte(byte1.Length%256);
rebyte[3]=Convert.ToByte(byte1.Length/256);
Array.Copy(byte1,0,rebyte,2+2,byte1.Length);
Array.Copy(byte2,0,rebyte,2+2+byte1.Length,byte2.Length);
Array.Copy(byte3,0,rebyte,2+2+byte1.Length+byte2.Length,byte3.Length);
//client.Send(new byte[]{Convert.ToByte(relength),0x00});
//Console.WriteLine("rebyte:{0}",BitConverter.ToString(rebyte));
client.Send(rebyte);
client.BeginSend(rebyte,0,rebyte.Length,SocketFlags.None,null,null);
}
else{
//Console.WriteLine("not register");
byte[] returns=new byte[]{0x02,0x00,0x02,0x00};
client.BeginSend(returns,0,returns.Length,SocketFlags.None,null,null);
}
sdr.Close();
conn.Close();
}
else{
//Console.WriteLine("m.Groups.Count={0}",m.Groups.Count);
}
}
else{
//Console.WriteLine("Error received");
}
}
catch(Exception excep){
//Console.WriteLine(excep.ToString());
}
finally
{
client.Shutdown(SocketShutdown.Both);
client.Close();
server.BeginAccept(new AsyncCallback(this.acConnection),this.Server);
Console.WriteLine("connection end");
}
}