C#客户端没有收到来自服务器的消息,不确定出了什么问题

本文关键字:不确定 消息 问题 什么 服务器 客户端 | 更新日期: 2023-09-27 18:25:05

请告诉我出了什么问题。还要注意的是,我一直在尝试调试,所以有些代码可能是多余的,不需要,但不应该阻止它工作。我知道客户端从来没有收到消息,因为我在消息的两边都使用了console.write,只有上面的socket.read()显示。我留下了那两个安慰。写在这篇帖子上。

服务器:

class class1
{
    static void Main(string[] args)
    {
                TcpListener serverSocket = new TcpListener(IPAddress.Any, info.Port);
                TcpClient clientSocket = default(TcpClient);
                serverSocket.Start();
                log.write(">> Listening for Clients'n");
                bool running = true;
                while (running)
                {
                  clientSocket = serverSocket.AcceptTcpClient();
                  newClient client = new newClient(clientSocket,log);
                  Thread clientThread = new Thread(new ThreadStart(client.start));
                  clientThread.Start();
            }
    }
}
class Client
{
        private clientType cType;
        private EndPoint cIP;
        private TcpClient socket;
        private NetworkStream cStream;
        public NetworkStream stream { get { return cStream; } }
        public clientType Type
        {
        get
                {
            return cType;
                }
            set
                {
                    cType = value;
                }
        }
        public EndPoint IP
        {
        get
                {
                    return cIP;
        }   
                set
                {
                    cIP = value;
                }
        }
        public Client(TcpClient clientSocket)
        {
                socket = clientSocket;
                cStream = socket.GetStream();
        }
    }
class newClient
{
    Client client;
    public newClient(tcpClient socket)
    {
        client = new Client(socket);
    }
    public void start()
    {
        loginObj loginRequest = new loginObj();
        BinaryFormatter formatter = new BinaryFormatter();
        MemoryStream memory = new MemoryStream();
        formatter.Serialize(memory, loginRequest);
        byte[] tempOutBytes = new byte[10025];
        byte[] outBytes;
        int numOfBytes = memory.read(tempOutBytes,0,tempOutBytes.Length);
        outBytes = new byte[numOfBytes];
        for(int counter = 0; counter < nuOfBytes; counter++)
            outBytes[counter] = tempOutBytes[counter];
        client.stream.Write(outBytes,0,outBytes.Length);
        //Rest of code waits for respond but client never gets the message so rest of code is not needed
    }
}

客户端:

class network
{
    private TcpClient socket = new TcpClient();
    public void start()
    {
        NetworkStream stream = socket.GetStream();
        MemoryStream memory = new MemoryStream();
        BinaryFormatter formatter = new BinaryFormatter();
        byte[] tempInBytes = new byte[10025];
        byte[] inBytes;
        int numOfBytes = stream.Read(tempInBytes,0,tempInBytes.Length);
        inBytes = new byte[numOfBytes];
        for(int counter = 0; counter < numOfBytes; counter++)
            inBytes[counter] = tempInBytes[counter];
        memory.write(inBytes,0,inBytes.Length);
        object msgObj = formatter.Deserialize(memory);
        Type msgType = msgObj.GetType();
        if(msgType == typeof(loginObj))
        {
            console.write("It works");
        }
    }
}

C#客户端没有收到来自服务器的消息,不确定出了什么问题

服务器程序

    using System;
    using System.Net.Sockets;
    using System.IO;
    using System.Threading;
    namespace Server
    {
        class Program
        {
            static void Main(string[] args)
            {
                TcpListener server = new TcpListener(5000);
                server.Start();
                Console.WriteLine("Server Started at {0}",DateTime.Now.ToString());
                while (true)
                {
                    Socket client = server.AcceptSocket();
                    Thread th = new Thread(ProcessSocket);
                    th.Start(client);
                }
            }
            public static void ProcessSocket(object o)
            {
                Socket client = (Socket)o;
                NetworkStream nws = new NetworkStream(client);
                StreamReader sr = new StreamReader(nws);
                while(client.Connected)
                {
                    string s = sr.ReadLine();
                    Console.WriteLine(" Message from {0} is :{1}", client.LocalEndPoint.ToString(), s);
                }
            }
        }
    }

客户端程序

using System;
using System.Net.Sockets;
using System.IO;

namespace Client
{
    class Program
    {
        static void Main(string[] args)
        {
            TcpClient  client = new TcpClient();
            client.Connect("IP/Hostname", 5000);
            NetworkStream nws = new NetworkStream(client.Client);
            StreamWriter sw = new StreamWriter(nws);
            while (client.Connected)
            {
                Console.Write("your Message:");
                string s=Console.ReadLine();
                sw.WriteLine(s);
                sw.Flush();
                Console.WriteLine("Message sent to server");
            }
        }
    }
}