private static void ReceiveCallBack(IAsyncResult AR) { Socket sock = (Socket)AR.AsyncState; int received; try { received = sock.EndReceive(AR); } catch (SocketException e) { Chat.addText("Lost connection to server."); frmMain.isSignedIn = false; return; } ServerConnect._serverSocket.BeginReceive(_buffer, 0, _buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveCallBack), ServerConnect._serverSocket); byte[] data = new byte[received]; Array.Copy(_buffer, data, received); Message msg = serial.unserialMsg(_buffer); if (msg.type == msgType.chat) { Chat.addMessage(msg); } else if (msg.type == msgType.server) { ServerMessage.handleMessage(msg); } }
public static void login(User user) { Chat.addText("Connecting to server..."); int conAttempts = 0; while (!_serverSocket.Connected) { try { conAttempts++; _serverSocket.Connect(serverIP, serverPort); Chat.addText("Connected to server!"); ChatListener.StartListener(); } catch (SocketException e) { if (conAttempts >= loginTimeout) { frmMain.isSignedIn = false; Chat.addText("Connection failed."); return; } } } }
public static void handleMessage(Message msg) { switch (msg.servResponse) { case serverResponse.loginFail: frmMain.isSignedIn = false; Chat.addText(msg.data); break; case serverResponse.loginSucess: frmMain.isSignedIn = true; Chat.addText(msg.data); break; } }
public static void StartListener() { ServerConnect._serverSocket.BeginReceive(_buffer, 0, _buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveCallBack), ServerConnect._serverSocket); if (!frmMain.isSignedIn) { ChatterDLL.Message loginReq = new ChatterDLL.Message(); loginReq.type = msgType.login; loginReq.sender = Chat.localUser; loginReq.receiver = new User() { username = "******" }; ChatSender.sendMessage(loginReq); Chat.addText("Signing in..."); } }