我是新手,所以会问这些问题,我看了一些书,还是没有懂
下面是我写的初始化,不知道写得对不对,不知道后面怎么写了                   Socket sk = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                IPAddress sIP = IPAddress.Parse("127.0.0.1");
                IPEndPoint server = new IPEndPoint(sIP, 80);
                sk.Bind(server);
                sk.Listen(10);
                TcpListener listener = new TcpListener(80);
                listener.Start();
                Console.WriteLine("服务初始化成功,开始侦听...")

解决方案 »

  1.   

    这样不行吧?
    Socket在Listen,后面又来个TcpListener监听80。这怎么行呢?
      

  2.   

    socket开发在CSDN我记得有个很全面的帖子的 我给你找找.
      

  3.   

    http://topic.csdn.net/u/20080619/08/dcef3fe2-f95b-4918-8edb-36d48a3d0528.html
    这里有很多.
      

  4.   


    namespace NGN
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                ///
                InitializeComponent();
                Control.CheckForIllegalCrossThreadCalls = false;
            }
            private IPAddress hostIPAddress = IPAddress.Parse("127.0.0.1");
            private IPEndPoint Server;
            private Socket listeningSocket;
            private Socket mySocket;
            //private string receivedata="";
            /***********************
             *****定义const常量*****
             ***********************/
            //无事件
            private  const int Event_None = 0;
            //insert告警
            private  const int Event_DataInsert = 1;
            //update告警
            private  const int Event_DataUpdate = 2;
            [STAThread]
            /************************
             *******发送数据*********
             ************************/
            public void SendData()
            {
                Socket sendSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                IPEndPoint client = new IPEndPoint(hostIPAddress, 1122);
                //sendSocket.Connect();
            }
            /************************
             *******端口监听*********
             ************************/
            public void ReceiveData()
            {
                try
                {                Thread thread = new Thread(new ThreadStart(ThreadProc));
                    thread.Start();
                    //}
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message);
                }
            }
            /************************
             *******数据接收*********
             ************************/
            public void begin()
            {
                if (listeningSocket != null && listeningSocket.Connected)
                {
                    mySocket = listeningSocket.Accept();
                    Thread thread = new Thread(new ThreadStart(ThreadProc));
                    thread.Start();
                }
            }        public void ThreadProc()
            {
                //创建接收数据的Socket
                listeningSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                //设置接收数据的地址
                Server = new IPEndPoint(hostIPAddress, 1122);
                //绑定主机端口
                listeningSocket.Bind(Server);
                //监听端口,设置队列数为50
                listeningSocket.Listen(50);
                this.label5.Text = "主机正在监听……";
                //以同步方式从侦听,并返回第一个挂起的连接请求
                //while (true)
                //if (listeningSocket.Connected)
                //{
                mySocket = listeningSocket.Accept();
                try
                {
                    //while (true)
                    {
                        //if (mySocket.Poll(1, SelectMode.SelectRead))
                        //if (listeningSocket.Connected)
                        {
                            //mySocket = listeningSocket.Accept();
                            if (mySocket != null && mySocket.Connected)
                            {
                                
                                //this.label5.Text = "与客户建立连接";
                                int i = 1;
                                while (true)
                                {
                                    //设置接收数据缓冲区的大小
                                    Byte[] recData = new Byte[512];
                                    mySocket.Receive(recData);
                                    int len = recData.Length;
                                    string ReceiveString = Encoding.GetEncoding("ASCII").GetString(recData);
                                    //receivedata = Encoding.ASCII.GetString(recData);
                                    if (ReceiveString != "")
                                    {
                                        string sendstr = "这是接收到的第" + i + "条信息";
                                        i++;
                                        byte[] bs = Encoding.GetEncoding("utf-8").GetBytes(sendstr);
                                        mySocket.Send(bs, bs.Length, 0);
                                        ReceiveDo(ReceiveString);
                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message);
                }
            }
            /************************
             *******监听停止*********
             ************************/
            public void StopListen()
            {
                try
                {
                    listeningSocket.Close();
                    label5.Text = "主机停止了监听";
                }
                catch
                {
                    MessageBox.Show("监听尚未开始");
                }
            }
            
      

  5.   


    /************************
             *******划分字段*********
             ************************/
            public string[] ExecuteData(string ReceiveString)
            {
                int start = ReceiveString.IndexOf(':',0);
                int end = ReceiveString.LastIndexOf('n');
                string DataString = ReceiveString.Substring(start + 1, end - start-4 );
                string[] CurrentList = DataString.Split('|');
                return CurrentList;
            }
            /************************
             *******判断事件*********
             ************************/
            public int GetEvent(string EventString)
            {
                if (EventString.Contains("insert"))
                    return Event_DataInsert;
                else if (EventString.Contains("update"))
                    return Event_DataUpdate;
                else
                    return Event_None;
            }
            public string SetSql(int Event,string[] DataList)
            {
                StringBuilder SqlBuilder = new StringBuilder();
                switch (Event)
                {
                    case Event_DataInsert:
                        SqlBuilder.Append("insert into boshan values (");
                        SqlBuilder.Append(""+DataList[0]+",");//Domain
                        SqlBuilder.Append(DataList[1] + ",");//SubDomain
                        SqlBuilder.Append("'" + DataList[2] + "',");//EMSName
                        SqlBuilder.Append("'" + DataList[3] + "',");//Node
                        SqlBuilder.Append("'" + DataList[4] + "',");//NodeAlias
                        SqlBuilder.Append("" + DataList[5] + ",");//Severity
                        SqlBuilder.Append("'" + DataList[6] + "',");//AlertName
                        SqlBuilder.Append("'" + DataList[7] + "',");//AlertType
                        SqlBuilder.Append("'" + DataList[8] + "',");//AlertSourceType
                        SqlBuilder.Append("'" + DataList[9] + "',");//AlertInfo2
                        SqlBuilder.Append("'" + DataList[10] + "',");//AlertInfo4
                        SqlBuilder.Append("'" + DataList[11] + "',");//Acknowledged
                        SqlBuilder.Append("'" + Convert.ToDateTime(DataList[12]) + "',");//AcknowledgedTime
                        SqlBuilder.Append("'" + Convert.ToDateTime(DataList[13]) + "',");//FirstNMSTime
                        SqlBuilder.Append("'" + Convert.ToDateTime(DataList[14]) + "',");//LastNMSTime
                        SqlBuilder.Append("'" + DataList[15]+"'"); //Summary
                        SqlBuilder.Append(")");
                        break;
                    case Event_DataUpdate:
                        SqlBuilder.Append("update baoshan set ");
                        SqlBuilder.Append("Domain=" + DataList[1] + ",");//Domain
                        SqlBuilder.Append("SubDomain=" + DataList[2] + ",");//SubDomain
                        SqlBuilder.Append("EMSName='" + DataList[3] + "',");//EMSName
                        SqlBuilder.Append("Node='" + DataList[4] + "',");//Node
                        SqlBuilder.Append("NodeAlias='" + DataList[5] + "',");//NodeAlias
                        SqlBuilder.Append("Severity='" + DataList[6] + "',");//Severity
                        SqlBuilder.Append("AlertName='" + DataList[7] + "',");//AlertName
                        SqlBuilder.Append("AlertType='" + DataList[8] + "',");//AlertType
                        SqlBuilder.Append("AlertSourceType='" + DataList[9] + "',");//AlertSourceType
                        SqlBuilder.Append("AlertInfo2='" + DataList[10] + "',");//AlertInfo2
                        SqlBuilder.Append("AlertInfo4='" + DataList[11] + "',");//AlertInfo4
                        SqlBuilder.Append("Acknowledged='" + DataList[12] + "',");//Acknowledged
                        SqlBuilder.Append("AcknowledgedTime='" + Convert.ToDateTime(DataList[13]) + "',");//AcknowledgedTime
                        SqlBuilder.Append("FirstNMSTime='" + Convert.ToDateTime(DataList[14]) + "',");//FirstNMSTime
                        SqlBuilder.Append("LastNMSTime='" + Convert.ToDateTime(DataList[15]) + "',");//LastNMSTime
                        SqlBuilder.Append("Summary='" + DataList[16] + "'");//Summary
                        SqlBuilder.Append("where identifier="+DataList[0]);
                        break;
                    default:
                        break;            }
                string Sql = SqlBuilder.ToString();
                //MessageBox.Show(Sql);
                return Sql;
            }
            /************************
             *******数据处理*********
             ************************/
            public void DataHandle(string sql)
            {
                try
                {
                    SqlConnection conn1 = new SqlConnection("user id=sa;database=.;initial catalog=NGN;");
                    SqlCommand cmd = new SqlCommand(sql, conn1);
                    conn1.Open();
                    cmd.ExecuteNonQuery();
                    conn1.Close();
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message);
                }
            }
            /************************
             *******综合处理*********
             ************************/
            public void ReceiveDo(string DataString)
            {
                //textBox3.Text=DataString;
                string[] DataList=ExecuteData(DataString);
                foreach (string data in DataList)
                {
                    textBox3.AppendText(data + "\r\n");
                }
                int Event = GetEvent(DataString);
                string Sql = SetSql(Event, DataList);
                DataHandle(Sql);
            }
            //NGNlogic logic;
            //NGNbean bean;
            private void Form1_Load(object sender, EventArgs e)
            {
                
                //logic = new NGNlogic();
                //string[] DataList= ExecuteData("insert:aaa|bbb|ccc|ddd\r\n");
                //foreach (string data in DataList)
                //{
                //    Console.Write(data);
                //    textBox3.AppendText(data);
                //}
                //int Event = logic.GetEvent(DataList[0]);
            }
            private void button1_Click(object sender, EventArgs e)
            {            //bean = new NGNbean();
                ////bean.abc();
                //bean.ReceiveData();
                ReceiveData();
            }        private void button2_Click(object sender, EventArgs e)
            {
                //bean = new NGNbean();
                //bean.StopListen();
                StopListen();
            }        private void timer1_Tick(object sender, EventArgs e)
            {
              
            }    }
    }