111,129
社区成员
发帖
与我相关
我的任务
分享
public void StartListen()
{
if (MainForm.sockBindFlag.Equals(false))//套接字还未创建
{
.....
}
while (true)
{
allDone.Reset();
listenSoc.Soc.BeginAccept(new AsyncCallback(AcceptCallback), listenSoc);//接收请求
allDone.WaitOne();
}
}
public void AcceptCallback(IAsyncResult ar)
{
try
{
.......
.......
/*dataGridView1添加内容*/
string updateDataGridView = "SELECT RoomNo as 房间编号,RoomName as 房间名称,SocketNo as 套接字编号,";
updateDataGridView += "FloorName as 层名称,BulidName as 楼名称, AreaName as 区域名称,BrightNess as 房间亮度 from RoomCtrlView ";
updateDataGridView += "where IPAddress ='" + clientSoc[nSoc].RemoteUserName + "'";
DataSet ds = G_SqlExecute.GetDs(updateDataGridView, "Room");
UpdateRoomDataView(ds);
clientSoc[nSoc].ReceiveData();//接收消息
}
}
catch (SocketException se)
{
MessageBox.Show(se.Message + "AcceptCallback");
}
}
private void UpdateRoomDataView(DataSet ds)
{
int columnCount = 0;
columnCount = ds.Tables[0].Columns.Count;
object[] obj = new object[columnCount + 1];
if (ds.Tables[0].Rows.Count > 0)
{
for (int k = 0; k < ds.Tables[0].Rows.Count; k++)
{
obj[0] = 0;
for (int i = 1; i < columnCount; i++)
{
obj[i] = ds.Tables[0].Rows[k][i - 1].ToString();
}
obj[columnCount] = ds.Tables[0].Rows[k][columnCount - 1];
}
try
{
dataGridView1.Rows.Add(obj);//将每一行的值添加到DataGridView上
//在这我捕捉异常,提示“不能向没有列的DataGridView控件添加行。”
//可是我的列明明就是静态创建好的,这是为什么???? }
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
}
private void UpdateRoomDataView(DataSet ds)
{
int columnCount = 0;
columnCount = ds.Tables[0].Columns.Count;
object[] obj = new object[columnCount + 1];
if (ds.Tables[0].Rows.Count > 0)
{
for (int k = 0; k < ds.Tables[0].Rows.Count; k++)
{
obj[0] = 0;
for (int i = 1; i < columnCount; i++)
{
obj[i] = ds.Tables[0].Rows[k][i - 1].ToString();
}
obj[columnCount] = ds.Tables[0].Rows[k][columnCount - 1];
}
try
{
dataGridView1.Rows.Add(obj);//将每一行的值添加到DataGridView上
//在这我捕捉异常,提示“不能向没有列的DataGridView控件添加行。”
//可是我的列明明就是静态创建好的,这是为什么???? }
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
}
private void McuControl_FormClosed(object sender, FormClosedEventArgs e)
{
if (serverThread != null)
{
if (serverThread.IsAlive)
{
if (listenSoc.Soc.Connected)//从这里开始一直都没有执行到里面
{
listenSoc.Soc.Shutdown(SocketShutdown.Both);//所以套接字关闭不了使得我不得不继续使用这个套接字,而没办法重新创建一个新的套接字!
listenSoc.Soc.Close();
}
serverThread.Abort();
}
}
}
