服务器端代码:
static void Main(string[] args)
{
static Socket sck;
Console.WriteLine("Server Started...");
sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sck.Bind(new IPEndPoint(0, 1234));
while (true)
{
sck.Listen(100);
Socket accepted = sck.Accept();
buffer = new byte[accepted.SendBufferSize];
int bytesRead = accepted.Receive(buffer);
byte[] formatted = new byte[bytesRead];
for (int i = 0; i < bytesRead; i++)
formatted[i] = buffer[i];
string strdata = Encoding.ASCII.GetString(formatted);
Console.WriteLine(strdata + "\r");
// sck.Close();
}
客户端代码:
static void Main(string[] args)
{
static Socket sck;
sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint localEndpt = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234);
try
{
sck.Connect(localEndpt);
}
catch
{
Console.Write("Unable to Connect");
}
while (true)
{
Console.WriteLine("Enter Text");
string sendtext = Console.ReadLine();
byte[] Data = Encoding.ASCII.GetBytes(sendtext);
sck.Send(Data);
Console.WriteLine("Data Sent!");
//sck.Close();
//Console.Read();
}
我想多次从客户端发送文本,但是文本只在第一次发送。请告诉我哪里出错了。
最佳答案
问题出在您的服务器上。你在一个循环中监听一个新的连接,接受它并接收数据。然而,发生的事情是倾听陈述看到的是一个想要联系的客户。您的 accept 语句实际上连接了客户端,您的 receive 语句接收了第一个数据。之后,您的服务器再次开始监听新连接,但不会从现有连接接收更多数据。您应该在服务器上围绕 Accept 语句和 Receive 语句构建一个循环来解决这个问题
关于c# - 通过单个套接字多次发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9406466/