2010-01-15 69 views
-1

如果用戶點擊連接而沒有輸入任何輸入,如何在異常情況下顯示輸入必須輸入?我希望有一個消息框顯示,如果用戶點擊連接按鈕,而不輸入名稱,IP和端口。 [解決]如果我已經連接到服務器。那麼我如何顯示異常說它已經連接

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.Sockets; 
using System.Threading; 

namespace SocketClient 
{ 

    public partial class SocketClient : Form 
    { 
     System.Net.Sockets.TcpClient clientSocket = new System.Net.Sockets.TcpClient(); 
     NetworkStream serverStream = default(NetworkStream); 
     string readData = null; 


     public SocketClient() 
     { 
      InitializeComponent(); 
     } 


     private void getMessage() 
     { 
      while (true) 
      { 
       serverStream = clientSocket.GetStream(); 
       int buffSize = 0; 
       byte[] inStream = new byte[10025]; 
       buffSize = clientSocket.ReceiveBufferSize; 
       serverStream.Read(inStream, 0, buffSize); 
       string returndata = System.Text.Encoding.ASCII.GetString(inStream); 
       readData = "" + returndata; 
       msg(); 
      } 
     } 


     private void msg() 
     { 
      if (this.InvokeRequired) 
       this.Invoke(new MethodInvoker(msg)); 
      else 
       textDisplay.Text = textDisplay.Text + Environment.NewLine + " >> " + readData; 
     } 


     private void buttonConnect_Click(object sender, EventArgs e) 
     { 

      readData = "Conected to NYP Server ..."; 
      msg(); 
      //clientSocket.Connect("127.0.0.1", 8888); 
      clientSocket.Connect(textIP.Text, Convert.ToInt32(textPort.Text)); 
      serverStream = clientSocket.GetStream(); 

      byte[] outStream = System.Text.Encoding.ASCII.GetBytes(textName.Text + "$"); 
      serverStream.Write(outStream, 0, outStream.Length); 
      serverStream.Flush(); 

      Thread ctThread = new Thread(getMessage); 
      ctThread.Start(); 
     } 

     private void buttonSend_Click(object sender, EventArgs e) 
     { 
      // Show msg box if no server is connected 
      if (serverStream == null) 
      { 
       MessageBox.Show("Please connect to a server first!"); 
       return; 
      } 

      // Send text 
      byte[] outStream = System.Text.Encoding.ASCII.GetBytes(textSend.Text + "$"); 
      serverStream.Write(outStream, 0, outStream.Length); 
      serverStream.Flush(); 

      // Clear text 
      textSend.Text = ""; 

     } 

     private void textDisplay_TextChanged(object sender, EventArgs e) 
     { 
      textDisplay.SelectionStart = textDisplay.Text.Length; 
      textDisplay.ScrollToCaret(); 
      textDisplay.Refresh(); 
     } 

     private void textSend_TextChanged(object sender, EventArgs e) 
     { 
      buttonSend.Enabled = !string.IsNullOrEmpty(textSend.Text); 
     } 
    } 
} 
+1

順便說一句,只是發佈所有的代碼是不一樣的解釋。 – 2010-01-15 03:19:42

回答

0

你的形式持有引用既TcpClientNetworkStream實例。這兩個實現IDisposable,所以他們必須明確處置。您必須重寫表單的Dispose方法,如果這些實例不爲null,則將其處置。

1

if(string.IsNullOrEmpty(textIP.Text) || string.IsNullOrEmpty(textPort.Text) || string.IsNullOrEmpty(textName.Text)) 
{ 
    MessageBox.Show("Please enter IP address, Port #, and Name"); 
} 
else 
{ 
    //they entered stuff...so, try to connect.. 
}

+0

好的謝謝。如果我已經連接到服務器。那麼我如何顯示異常,說它已經連接 – lewis 2010-01-15 05:00:49

+0

你真的應該試試看......如果你有麻煩,請發佈解釋你試過的東西,並尋求幫助。 – 2010-01-15 05:21:40

+0

我以後需要它,你能再幫我一次嗎?請:( – lewis 2010-01-15 05:36:38

1

您可以使用TcpClient.Connected屬性來檢查連接是否已經建立。

 
if(clientSocket.Connected){ 
    .... show error message here 
} 
else{ 
    ... go ahead 
} 
+0

我如何結合我當前的代碼,因爲我已經實現了IF輸入區域 – lewis 2010-01-15 06:15:20

相關問題