[英]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.