using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Hosting;
using System.Net.Sockets;
using System.Net;
using System.Text;
using System.IO;
using System.Threading;
namespace WebApplication1
{
public partial class login : System.Web.UI.Page
{
Socket clientsocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);//socket对象
int jiazai = 0;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnlogin_Click(object sender, EventArgs e)
{
if (txtid.Text == "" || txtpwd.Text == "" || !message.isnumber(txtid.Text))
{
Response.Write("<script>alert('账户不能为空且只能由数字组成!')</script>");
}
else
{
if (jiazai == 0)
{
IPAddress ipconn = IPAddress.Parse("192.168.43.225");
//IPAddress ip=IPAddress.Parse("192.9.101.211");
clientsocket.Connect(ipconn, 8885);//socket客户端连接
Thread td = new Thread(recive);//这里是接收线程
td.IsBackground = true;
td.Start(clientsocket);//线程开启
jiazai += 1;//开启一次之后就不用再开启了
}
string ip=jiakongge(getipv4(),20);
byte[] sen=new byte[1024];
sen = Encoding.UTF8.GetBytes(ip + "01" + jiakongge(txtid.Text, 10) + jiakongge(txtpwd.Text, 20));//这里是客户信息
clientsocket.Send(sen);
}
}
private void recive(object obj)
{
Socket ss = (Socket)obj;
while(true)
{
byte[] rec = new byte[1024];
byte[] sen = new byte[1024];
int len = ss.Receive(rec);//接收信息
if (len > 0)
{
string taojiezi = Encoding.UTF8.GetString(rec);
string answer = taojiezi.Substring(3, 1);
switch (answer)
{
case "0":
Response.Write("<script>alert('没有此用户!');</script>");//此处报错
break;
case "1":
Response.Write("<script>alert('密码错误!');</script>");
break;
case "2":
sen = Encoding.UTF8.GetBytes(jiakongge(getipv4(), 20) + "99");
ss.Send(sen);
Response.Redirect("main.aspx");
break;
case "3":
Response.Write("<script>alert('出现异常!');</script>");
break;
}
}
}
}
private static string getipv4()//获取IPv4地址
{
string hostname = Dns.GetHostName();
IPHostEntry ipentry = Dns.GetHostEntry(hostname);
for (int i = 0; i < ipentry.AddressList.Length; i++)
{
if (ipentry.AddressList[i].AddressFamily == AddressFamily.InterNetwork)
{
return ipentry.AddressList[i].ToString();
}
}
return "";
}
private static string jiakongge(string s,int len)//固定字符串长度,不够右补空格
{
int a;
if (string.IsNullOrEmpty(s))
{
a = 0;
return s;
}
else
{
a = s.Length;
if (a < len)
{
for (int i = 0; i < (len - a); i++)
{
s = s + " ";
}
return s;
}
else
{
return s.Substring(0,len);
}
}
}
}
}
这是提示的报错:
1、先确认你的前台web页面的<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >是否是W3C标准;如果不符合W3C标准,有时直接写是不行的,必须写成
2、是否有其他的js代码段与此处的alert()冲突;
3、你这个web页是框架里的页面吗?有时框架里的js执行是会莫名其妙的出问题的;
应该是和UI线程冲突了。
private System.Threading.SynchronizationContext m_SyncContext = System.ComponentModel.AsyncOperationManager.SynchronizationContext;
case "0":
{
m_SyncContext.Post(new System.Threading.SendOrPostCallback((p)=>
{
Response.Write("alert('没有此用户!');");//此处报错
}),null);
}
break;
@zhongyu627
不用Response,用这个 试试
ClientScript.RegisterStartupScript(GetType(), "message", "alert('改成这个');");
前台只留个Button
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Button"
onclick="btnlogin_Click" />
</div>
</form>
protected void btnlogin_Click(object sender, EventArgs e)
{
Thread th = new Thread(getipv4);
th.Start();
}
private void getipv4()//获取IPv4地址
{
try
{
//Response.Write("<script>alert('我来自线程')</script>");
ClientScript.RegisterStartupScript(GetType(), "message", "<script>alert('改成这个');</script>");
}
catch (Exception ex)
{
//catch加断点 看捕获异常
}
}