//接收數據 private void ReceiveData(object socketConnecting) { //獲取客戶端套接字 Socket socketClient = socketConnecting as Socket; while (true) { byte[] receiveDataVal = new byte[receiveDataValLength]; int receiveDataLength = -1; try { receiveDataLength = socketClient.Receive(receiveDataVal); //接收到數據 if (receiveDataLength > 0) { //處理接收到的數據 //ReceivedDataProcess(socketClient,receiveDataVal, receiveDataLength); TcpReceiveEvent rEvent = new TcpReceiveEvent(); rEvent.clientSocket = socketClient; rEvent.data = receiveDataVal; rEvent.length = receiveDataLength; OnReceiveDataFromClient(this, rEvent); } else { dictSocket.Remove(socketClient.RemoteEndPoint.ToString()); dictThread.Remove(socketClient.RemoteEndPoint.ToString()); //DeleteClientSocket(socketClient.RemoteEndPoint.ToString()); return; } } catch { dictSocket.Remove(socketClient.RemoteEndPoint.ToString()); dictThread.Remove(socketClient.RemoteEndPoint.ToString()); //DeleteClientSocket(socketClient.RemoteEndPoint.ToString()); return; } } }
/* * private void ReceivedDataProcess(Socket clientSocket, byte[] datas, int lenght) * { * * NewOneThreadSendDataToClient(clientSocket ,datas, lenght); * * } */ public abstract void ReceivedDataProcess(object sender, TcpReceiveEvent e);