public bool ConnectSV() { if (!sl.ConnectServer()) { return(false); } ClientStruct cs = new ClientStruct(); cs.client = sl.MySocket; try { int length = cs.client.Receive(cs.socketdata.Buffer); ID = int.Parse(UnicodeEncoding.ASCII.GetString(cs.socketdata.Buffer, 0, length)); cs.client.BeginReceive(cs.socketdata.Buffer, 0, SocketData.BufferLength, 0, new AsyncCallback(ReceiveCallbackCL), cs); } catch (Exception e) { //MessageBox.Show(e.ToString() + "\nServer dong ket noi"); //sv dong ket noi ExitDraw?.Invoke(-1); Release(); } return(true); }
private ClientStruct parseClient(Queue <string> confContentQueue) { var clientStruct = new ClientStruct(); while (true) { var willClose = false; switch (confContentQueue.Peek()) { default: var kvp = confContentQueue.Dequeue().Split(' '); break; case "[client]": break; case "[server]": willClose = true; break; } if (willClose) { return(clientStruct); } } }
private void ReceiveCallbackCL(IAsyncResult ar) { ClientStruct cs = ar.AsyncState as ClientStruct; try { string gettingdata = UnicodeEncoding.ASCII.GetString(cs.socketdata.Buffer, 0, cs.client.EndReceive(ar)); ReceiveData?.Invoke(gettingdata); cs.client.BeginReceive(cs.socketdata.Buffer, 0, SocketData.BufferLength, 0, new AsyncCallback(ReceiveCallbackCL), cs); } catch (Exception e) { //MessageBox.Show(e.ToString() + "\nServer dong ket noi"); //sv dong ket noi ExitDraw?.Invoke(-1); Release(); } }
private ConfigStruct ParseConfContent(Queue <string> confContentQueue) { var clientStruct = new ClientStruct(); var serverList = new List <ServerStruct>(); while (confContentQueue.Count > 0) { switch (confContentQueue.Peek()) { case "[client]": clientStruct = parseClient(confContentQueue); break; case "[server]": break; } } return(new ConfigStruct { Client = clientStruct, ServerList = serverList }); }
public bool MakeSV() { ID = -1; if (!sl.MakeServer()) { return(false); } clientList = new List <ClientStruct>(); ConnectThread = new Thread(p => { while (true) { ClientStruct cs = new ClientStruct(); cs.client = sl.MySocket.Accept(); cs.clientdata.ID = sttid++; clientList.Add(cs); ClientStatus?.Invoke(clientList.Count); try { Send(cs.client, cs.clientdata.ID.ToString()); cs.client.BeginReceive(cs.socketdata.Buffer, 0, SocketData.BufferLength, 0, new AsyncCallback(ReceiveCallbackSV), cs); } catch (Exception e) { //MessageBox.Show(e.ToString() + "\nClient bi xoa"); //client bi xoa cs.Destructor(); clientList.Remove(cs); ClientStatus?.Invoke(clientList.Count); } } }); ConnectThread.Start(); return(true); }
private void ReceiveCallbackSV(IAsyncResult ar) { ClientStruct cs = ar.AsyncState as ClientStruct; try { string gettingdata = UnicodeEncoding.ASCII.GetString(cs.socketdata.Buffer, 0, cs.client.EndReceive(ar)); ReceiveData?.Invoke(gettingdata); cs.client.BeginReceive(cs.socketdata.Buffer, 0, SocketData.BufferLength, 0, new AsyncCallback(ReceiveCallbackSV), cs); } catch (Exception e) { //MessageBox.Show(e.ToString() + "\nClient bi xoa"); //client bi xoa cs.Destructor(); clientList.Remove(cs); ExitDraw?.Invoke(cs.clientdata.ID); ClientStatus?.Invoke(clientList.Count); } }
private void AcceptEventArgs_Completed(object sender, SocketAsyncEventArgs e) { SocketAsyncEventArgs acceptEventArgs; SocketAsyncEventArgs receiveEventArgs; switch (e.SocketError) { case SocketError.Success: if (repeat) { lock (socketHashtable) { while (socketHashtable.ContainsKey(connectNum)) { connectNum++; } } } else { if (connectNum < 0) { repeat = true; } } ClientStruct client = new ClientStruct { id = connectNum, s = e.AcceptSocket, sendBuffer = new byte[255], recvBuffer = new byte[255], sendData = new List <byte>(), recvData = new List <byte>(), userToken = OnAcceptSuccessEvent?.Invoke(connectNum), state = 0, sendEventArgs = new SocketAsyncEventArgs[2] }; for (int i = 0; i < 2; i++) { SocketAsyncEventArgs sendEventArgs = new SocketAsyncEventArgs(); sendEventArgs.Completed += SendEventArgs_Completed; client.sendEventArgs[i] = sendEventArgs; } lock (socketHashtable) { socketHashtable.Add(connectNum++, client); } receiveEventArgs = new SocketAsyncEventArgs(); receiveEventArgs.Completed += ReceiveEventArgs_Completed; receiveEventArgs.UserToken = client; receiveEventArgs.SetBuffer(client.recvBuffer, 0, client.recvBuffer.Length); if (!e.AcceptSocket.ReceiveAsync(receiveEventArgs)) { ReceiveEventArgs_Completed(e.AcceptSocket, receiveEventArgs); } acceptEventArgs = new SocketAsyncEventArgs(); acceptEventArgs.Completed += AcceptEventArgs_Completed; if (!socket.AcceptAsync(acceptEventArgs)) { AcceptEventArgs_Completed(socket, acceptEventArgs); } break; case SocketError.ConnectionReset: acceptEventArgs = new SocketAsyncEventArgs(); acceptEventArgs.Completed += AcceptEventArgs_Completed; if (!socket.AcceptAsync(acceptEventArgs)) { AcceptEventArgs_Completed(socket, acceptEventArgs); } break; } }