コード例 #1
0
ファイル: Server.cs プロジェクト: Oganesian/ChatServer
        public void Listen()
        {
            IPAddress localAdd = IPAddress.Parse(SERVER_IP);

            listener = new TcpListener(localAdd, PORT);
            Console.WriteLine("Listening...");
            listener.Start();

            while (true)
            {
                TcpClient tcpClient = listener.AcceptTcpClient();

                // var client = new Client(tcpClient);

                NetworkStream nwStream = tcpClient.GetStream();
                object        received = JsonSerializerProvider.DeserializeBinary(nwStream);

                if (received is Account account)
                {
                    Console.WriteLine("A new client connected");
                    Console.WriteLine("Received: {0}#{1}", account.Username, account.PublicId);
                    //connectedClients.RemoveAll(x => x.tcpClient == client.tcpClient);
                    account.tcpClient = tcpClient;
                    AddConnection(account);
                    new Thread(() => ListenToClient(account)).Start();
                }
            }
        }
コード例 #2
0
 public void DeserializeJson()
 {
     JsonSerializerProvider.Deserialize(new DataContractJsonSerializer(Drivers.GetType()), ref Drivers);
     JsonSerializerProvider.Deserialize(new DataContractJsonSerializer(Routes.GetType()), ref Routes);
     JsonSerializerProvider.Deserialize(new DataContractJsonSerializer(Transports.GetType()), ref Transports);
     JsonSerializerProvider.Deserialize(new DataContractJsonSerializer(Shifts.GetType()), ref Shifts);
     JsonSerializerProvider.Deserialize(new DataContractJsonSerializer(DriverShifts.GetType()), ref DriverShifts);
     JsonSerializerProvider.Deserialize(new DataContractJsonSerializer(TechPassports.GetType()), ref TechPassports);
 }
コード例 #3
0
 public void SerializeJson()
 {
     JsonSerializerProvider.Serialize(new DataContractJsonSerializer(Drivers.GetType()), Drivers);
     JsonSerializerProvider.Serialize(new DataContractJsonSerializer(Routes.GetType()), Routes);
     JsonSerializerProvider.Serialize(new DataContractJsonSerializer(Transports.GetType()), Transports);
     JsonSerializerProvider.Serialize(new DataContractJsonSerializer(Shifts.GetType()), Shifts);
     JsonSerializerProvider.Serialize(new DataContractJsonSerializer(DriverShifts.GetType()), DriverShifts);
     JsonSerializerProvider.Serialize(new DataContractJsonSerializer(TechPassports.GetType()), TechPassports);
 }
コード例 #4
0
ファイル: Server.cs プロジェクト: Oganesian/ChatServer
 private void HandleFriendRequest(FriendRequest request)
 {
     try
     {
         var targetAccount = connectedAccounts.Find(x => x.Username == request.TargetUsername && x.PublicId == request.TargetPublicId);
         if (targetAccount != null)
         {
             request.TargetId = targetAccount.Id;
             var receiverNwStream = targetAccount.tcpClient.GetStream();
             JsonSerializerProvider.SerializeBinary(receiverNwStream, request);
             Console.WriteLine("Friend Request from {0}#{1} to {2}#{3}  | public key: {4}", request.SenderUsername, request.SenderPublicId,
                               request.TargetUsername, request.TargetPublicId, System.Text.Encoding.UTF8.GetString(request.senderPublicKey));
         }
     }
     catch (Exception e)
     {
         Console.WriteLine("Exception: " + e.Message);
     }
 }
コード例 #5
0
ファイル: Server.cs プロジェクト: Oganesian/ChatServer
        private void InterpretIncomingMessage(NetworkStream nwStream)
        {
            object received = JsonSerializerProvider.DeserializeBinary(nwStream);

            if (received is Message message)
            {
                Console.OutputEncoding = System.Text.Encoding.UTF8;
                Console.WriteLine("Message from {0} to {1}, {2}: {3}", message.SenderUniqueId, message.ReceiverUniqueId, message.Timestamp,
                                  System.Text.Encoding.UTF8.GetString(message.EncryptedMessage));
                try
                {
                    var receiver = connectedAccounts.FirstOrDefault(x => x.Id == message.ReceiverUniqueId);
                    if (receiver != null)
                    {
                        var receiverNwStream = receiver.tcpClient.GetStream();
                        // Writes serialized binary data into the stream
                        JsonSerializerProvider.SerializeBinary(receiverNwStream, message);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine("Exception: " + e.Message);
                }
            }
            else if (received is FriendRequest request)
            {
                HandleFriendRequest(request);
            }
            else if (received is FriendResponse response)
            {
                HandleFriendResponse(response);
            }
            else
            {
                Console.WriteLine("Received: " + received);
            }
        }
コード例 #6
0
 public JsonNetFormatter(JsonSerializerProvider serializerProvider)
 {
     _serializer = serializerProvider.GetSerializer();
     SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"));
 }