c# - 通过单个套接字多次发送数据

标签 c# .net sockets c#-4.0

服务器端代码:

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/

相关文章:

.net - 如何解决 SQL Server Compact Edition 数据库上 LINQ to SQL 中的 "Row not found or changed"异常?

c++ - 在套接字上写多于读

c# - 在 asp.net 中更改区域性时实例是只读异常

c# - 从 JSON 文件中提取数据的 Null 引用

c# - 在 ASP.NET 中插入 SqlCommand 时出错

c# - 如何在 Unity3D 的 OnDrawGizmos 中以屏幕像素坐标绘制某些内容?

c# - 在 asp.net 中传递双引号

c# - 有哪些可能的设计来解决这个并发问题?

javascript - Node.js:在express.js 路由中使用Socket.io 将消息发送到特定客户端

Java 套接字 - 如何确定服务器端的数据类型?