首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

c#网络通信有关问题 服务器只能接收一次信息

2013-03-14 
c#网络通信问题服务器只能接收一次信息服务器代码using Systemusing System.Collections.Genericusing S

c#网络通信问题 服务器只能接收一次信息
服务器代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Threading;

namespace receive
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Thread thread = new Thread(new ThreadStart(SocketListen));
            thread.Start();
            IPAddress ipAddress = IPAddress.Any; 
        }
        protected delegate void UpdateDisplayDelegate(string text);
        public void SocketListen()
        {
            Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            listener.Bind(new IPEndPoint(IPAddress.Any, 9999));
            listener.Listen(10);
            Socket s = listener.Accept();
            while (true)
            {
                Stream netStream = new NetworkStream(s);
                StreamReader reader = new StreamReader(netStream);
                string result = reader.ReadToEnd();
                Invoke(new UpdateDisplayDelegate(UpdateDisplay), new object[] { result });
            }
        }
        public void UpdateDisplay(string text)
        {
            textBox1.Text += text; 
        }
    }
}
客户端代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.IO;

namespace send
{
    public partial class Form1 : Form
    {
        public Form1()


        {
            InitializeComponent();
        }
        TcpClient tc;
        private void button1_Click(object sender, EventArgs e)
        {
             
            NetworkStream ns = tc.GetStream();
            if (ns.CanWrite)
            {
                Byte[] sendbytes = Encoding.ASCII.GetBytes(textBox3.Text);
                ns.Write(sendbytes, 0, sendbytes.Length);
                ns.Close();
                tc.Close();
            }
            else
            {
                MessageBox.Show("不能写入数据流", "终止", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                ns.Close();
                tc.Close();
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            tc= new TcpClient(textBox1.Text, Convert.ToInt32(textBox2.Text));
        }
    }
}
为什么服务器只能接收一次信息?求大神们帮忙
[解决办法]
参考一下这个
[解决办法]
            while (true)
            {
            Socket s = listener.Accept();
                Stream netStream = new NetworkStream(s);
                StreamReader reader = new StreamReader(netStream);
                string result = reader.ReadToEnd();
                Invoke(new UpdateDisplayDelegate(UpdateDisplay), new object[] { result });
            }

热点排行