none
關於TcpListener 一次只能用一個通訊端位址 RRS feed

  • 問題

  •  請問我在寫有關於Socket與TcpListener時發生了一個問題就是當我重覆接收Server Send資料會出問題,在我程式上myListener.Start(); 會出錯..那要怎麼解決呢?

    Code Snippet

    try
                {
                    Socket theConnection = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    string ip = Dns.GetHostAddresses(Dns.GetHostName())[0].ToString();
                    IPAddress myIP = IPAddress.Parse(ip);
                    IPEndPoint myEP = new IPEndPoint(myIP, 1234);
                    TcpListener myListener = new TcpListener(myEP);
                    myListener.Start();

                    theConnection = myListener.AcceptSocket();

                    int bytes = 0;
                    byte[] recv = new Byte[256];
                    string recvstring = "";
                    bytes = theConnection.Receive(recv, recv.Length, 0);
                    recvstring = Encoding.UTF8.GetString(recv, 0, bytes);
                    label1.Text = recvstring;

                    theConnection.Shutdown(SocketShutdown.Both);
                    theConnection.Close();
                }
                catch (Exception error)
                {
                    MessageBox.Show(error.ToString());
                } 

     

    2007年4月9日 上午 06:44

所有回覆

  • 你的myListener並沒有做Stop,再者呼叫Start當然會出錯
    2007年4月9日 上午 06:52
  • hi 各位達人
     
    請問用TCPListener作的 server 端,可以給多個cliene端連嗎?? 怎麼作??

    要用socket還是用TCPListener監聽??

    以下有討論,請問會有問題嗎??

    http://www.cnblogs.com/stone/archive/2005/04/26/145391.html

    感謝您!!
    2008年1月30日 上午 01:16
  • 都可以。我自己用 Socket

     

    兩個都有類似方法,用 tcpListener 是 xxxSocket/xxxTcpClient

     

    有連線要求時,用 EndAccept 產生一個新的 socket 來接收這個網路要求,這樣 Server 也不用重新 Listen ,這樣是非同步多緒。

     

    一開始建議先看線上手冊的 使用非同步伺服器通訊端 範例,這個範例只能接一個連接,但是非同步,對於後面非同步多緒會比較有感覺。 (tcpListener)

     

    之後再看線上手冊 非同步伺服器通訊端範例 (Socket)

     

     

     

    2008年2月2日 上午 08:52