簡體   English   中英

如何使用C#包含空間從客戶端向服務器發送消息

[英]How to send a message from client to server using c# containg spaces

我創建了以下代碼,但是有一個問題:我無法從客戶端向服務器發送包含空格的大消息。

這是我的服務器代碼

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;


namespace ServerApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Starting: Creating Socket object");
            Socket listener = new Socket(AddressFamily.InterNetwork,
            SocketType.Stream,
            ProtocolType.Tcp);
            listener.Bind(new IPEndPoint(IPAddress.Any, 2112));
            listener.Listen(10);
            while (true)
            {
                Console.WriteLine("Waiting for connection on port 2112");
                Socket socket = listener.Accept();
                string receivedValue = string.Empty;
                while (true)
                {
                    if (socket.Available > 0)
                    {
                        byte[] receivedBytes = new byte[socket.ReceiveBufferSize];
                        int numBytes = socket.Receive(receivedBytes);
                        Console.WriteLine("Receiving...");
                        receivedValue += Encoding.ASCII.GetString(receivedBytes);

                        break;

                    }
                }
                Console.WriteLine("Received value: {0}", receivedValue);
                Console.WriteLine("Enter ur Msg");
                string replyValue = Console.ReadLine();
                //string replyValue = "Message successfully received.";
                byte[] replyMessage = Encoding.ASCII.GetBytes(replyValue);
                socket.Send(replyMessage);
                socket.Shutdown(SocketShutdown.Both);
                socket.Close();
            }
            listener.Close();
        }
    }
}

這是我給客戶的代碼

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;

namespace ClientApp
{
    class Program
    {
        static void Main(string[] args)
        {
            byte[] receivedBytes = new byte[2048];
            //IPHostEntry ipHost = Dns.Resolve("192.168.1.55");
            IPHostEntry ipHost = Dns.Resolve("127.0.0.1");
            IPAddress ipAddress = ipHost.AddressList[0];
            //IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 8000);
            IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 2112);
            Console.WriteLine("Starting: Creating Socket object");
            Socket sender = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
            sender.Connect(ipEndPoint);
            Console.WriteLine("Successfully connected to {0}",sender.RemoteEndPoint);
            Console.WriteLine("Enter Client Message :");
            string sendingMessage = Console.ReadLine();
            //string sendingMessage = "Hello World Socket Test";
            Console.WriteLine("Creating message:{0}",sendingMessage);
            byte[] forwardMessage = Encoding.ASCII.GetBytes(sendingMessage + "[FINAL]");
            sender.Send(forwardMessage);
            int totalBytesReceived = sender.Receive(receivedBytes);
            Console.WriteLine("Message provided from server: {0}",Encoding.ASCII.GetString(receivedBytes,0, totalBytesReceived));
            sender.Shutdown(SocketShutdown.Both);
            sender.Close();
            Console.ReadLine();
        }
    }
}

請告訴我正確的方法。

預先感謝您的建議

服務器

Console.WriteLine("Starting: Creating Socket object");
Socket listener = new Socket(AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
listener.Bind(new IPEndPoint(IPAddress.Any, 2112));
listener.Listen(10);
while (true)
{
  Console.WriteLine("Waiting for connection on port 2112");
  Socket socket = listener.Accept();
  string receivedValue = string.Empty;
  while (true)
  {
    if (socket.Available > 0)
    {
      do
      {
        var receivedBytes = new byte[socket.Available];
        socket.Receive(receivedBytes);
        Console.WriteLine("Receiving...");
        receivedValue += Encoding.Default.GetString(receivedBytes);
      } while (socket.Available > 0);
      break;
    }
  }
  Console.WriteLine("Received value: {0}", receivedValue);
  Console.WriteLine("Enter ur Msg");
  string replyValue = Console.ReadLine();
  //string replyValue = "Message successfully received.";
  byte[] replyMessage = Encoding.Default.GetBytes(replyValue);
  socket.Send(replyMessage);
  socket.Shutdown(SocketShutdown.Both);
  socket.Close();
}
listener.Close();

客戶

byte[] receivedBytes = new byte[2048];
//IPHostEntry ipHost = Dns.Resolve("192.168.1.55");
IPHostEntry ipHost = Dns.Resolve("127.0.0.1");
IPAddress ipAddress = ipHost.AddressList[0];
//IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 8000);
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 2112);
Console.WriteLine("Starting: Creating Socket object");
Socket sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sender.Connect(ipEndPoint);
Console.WriteLine("Successfully connected to {0}", sender.RemoteEndPoint);
Console.WriteLine("Enter Client Message :");
string sendingMessage = Console.ReadLine();
//string sendingMessage = "Hello World Socket Test";
Console.WriteLine("Creating message:{0}", sendingMessage);
byte[] forwardMessage = Encoding.Default.GetBytes(sendingMessage);
sender.Send(forwardMessage);
int totalBytesReceived = sender.Receive(receivedBytes);
Console.WriteLine("Message provided from server: {0}", Encoding.ASCII.GetString(receivedBytes, 0, totalBytesReceived));
sender.Shutdown(SocketShutdown.Both);
sender.Close();
Console.ReadLine();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM