namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        private IPAddress myIP = IPAddress.Parse("172.0.0.1");
        private IPEndPoint MyServer;
        private Socket sock;
        private bool check = true;
        private Socket accSock;
        private void accp()
        {
            MyServer = new IPEndPoint(myIP,Int32.Parse(textBox2.Text));
            sock = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
            sock.Bind(MyServer);
            sock.Listen(50);
            //textBox3.AppendText("主机"+textBox1.Text+"端口"+textBox2.Text+"开始监听\r\n");
            accSock = sock.Accept();
            if (accSock.Connected)
            {
                textBox3.AppendText("与客户建立连接。");
                while (check)
                {
                    Byte[] Rec = new Byte[64];
                    NetworkStream netStream = new NetworkStream(accSock);
                    netStream.Read(Rec,0,Rec.Length);
                    string RecMessage = System.Text.Encoding.BigEndianUnicode.GetString(Rec);
                    richTextBox1.AppendText(RecMessage+"\r\n");
                }
            }
        }        public Form1()
        {
            InitializeComponent();
        }        private void Form1_Load(object sender, EventArgs e)
        {        }        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                myIP = IPAddress.Parse(textBox1.Text);
            }
            catch
            {
                MessageBox.Show("您输入的IP格式错误");
            }
            try
            {
                Thread thread = new Thread(new ThreadStart(accp));
                thread.Start();
            }
            catch(Exception ee)
            {
                textBox3.AppendText(ee.Message);
            }
        }
    }
}
《c#网络核心编程》里的同步套接字的服务器代码,我敲了几次,本以为是自己出错了,但仔细对照了,没有发现问题,,运行就报错,那位高手帮我看看是哪里的问题啊,谢谢了,,,

解决方案 »

  1.   

     textBox3.AppendText("主机"+textBox1.Text+"端口"+textBox2.Text+"开始监听\r\n");这里提示有错误
      

  2.   

    另外哪位朋友有《c#网络核心编程》,清华大学出版的,,,源码谁有呀,,,麻烦给我传一份,谢谢了先
    我的QQ:5556055
      

  3.   

    使用Control.Invoke来达到更改主线程的操作.
    看http://topic.csdn.net/u/20080826/20/303a5b46-ac45-4b1d-b748-26069c7bcecb.html
      

  4.   

    你发的代码不全...但从命名上看textBox3是个TextBox控件,而AppendText方法是RichTextBox控件才有的...你拉错控件了,多学点基础的东西吧...如果确实和书上的代码一致,那就是书错了...除了微软和少数几个国外出版社的官方翻译本,80%以上的.NET中文技术书都是垃圾...
      

  5.   

    谢谢楼上的朋友,我换成RichTextBox空间,问题依然,看来不是这里的问题哪位朋友能推荐本学习c#网络的好书啊,谢谢了,,本人自学走了很多弯路,希望朋友们能帮我引导正确的路,
      

  6.   

    .net1.1中编译会通过,.net2.0中肯定是不会通过的。
    线程不能够直接操作GUI的控件。1你要写一个委托
    public delegate void AppendTextHandler(string text);2接下来写一个函数public void SetText(string msg)
    {
        try{
        //使用form1的invoke方法
        this.Invoke(new AppendTextHandler(_SetText),new object[]{msg});
        }catch
        {}
    }3写实现函数
    private void _SetText(string msg)
    {
       textBox3.AppendText(msg); 
    }4在线程的调用处
                ...
                sock.Listen(50);
                //textBox3.AppendText("主机"+textBox1.Text+"端口"+textBox2.Text+"开始监听\r\n");
                SetText("主机"+textBox1.Text+"端口"+textBox2.Text+"开始监听\r\n");
                accSock = sock.Accept(); 
                ...
      

  7.   

    textBox3.Text += ("主机"+textBox1.Text+"端口"+textBox2.Text+"开始监听\r\n");
    我怎么没看出来会有错哩,你这样试下!