/* 콤보박스로 디바이스 변경 필요시 * private void CB_SelectedIndexChanged(object sender, EventArgs e) * { * lock (obj) * { * * Device_Def.Device = CB.SelectedItem.ToString(); * } * } */ private void BtServer_Click(object sender, EventArgs e) { if (BtSrv.Text == "Server") { try { IP = txtIP.Text; UI_set.Connection_Live = true; server = new CSocketServer(); PL = new PLCManager(); Thread t = new Thread(new ParameterizedThreadStart(PL.SocketInit)); Thread gr = new Thread(RefreshDisplayPLCData_Except_AddressColumn); if (!int.TryParse(txtPort.Text, out Port)) { MessageBox.Show("유효한 포트번호가 아닙니다."); } state = 1; PL.SocketLive = true; Control_Change(state); t.IsBackground = true; t.Start(IP); gr.Start(); } catch (Exception ev) { MessageBox.Show(ev.Message); } } else if (BtSrv.Text == "Server On") { Thread t = new Thread(new ParameterizedThreadStart(PL.SocketInit)); Thread gr = new Thread(RefreshDisplayPLCData_Except_AddressColumn); BtSrv.Text = "Server"; state = 0; server.CloseSockets(); txtPort.Enabled = true; txtIP.Enabled = true; MainForm.Text = "Waiting"; BtSrv.BackColor = SystemColors.Control; BtClient.Enabled = true; dataReset(); t.Abort(); gr.Abort(); PL.SocketLive = false; Gridreset(); } }
public void ServerAction(object arg) { string[] fullText = Convert.ToString(arg).Split('/'); string ip = fullText[0]; int portno = Convert.ToInt32(fullText[1]); int id = int.Parse(fullText[2]); int index = -1; CSocketServer server = new CSocketServer(); bool x = server.StartListen(ip, portno); // 서버.대기시작(포트번호) if (x == false) { MessageBox.Show(portno.ToString() + " 통신 Port를 확인하세요"); Environment.Exit(1); } while (SocketLive && PLCName != null) { Thread.Sleep(1); CDataObject data = server.GetReceiveData(); //0번 배열 길이 for (int i = 0; i < SocketConnect.GetLength(0); i++) { if (SocketConnect[i, 0] == portno) { index = i; if (server.m_workerSocket[0] != null && SocketConnect[index, 0] != 0) { if (index != -1 && server.m_workerSocket[0].Connected) { SocketConnect[index, 1] = 1; } else { SocketConnect[index, 1] = 0; } } break; } } if (data != null) // 서버에서, 수신 데이터가 Null이 아니면 { PLCMethod(server, data); } } server.CloseSockets(); }