我有一個簡單的TCP客戶端服務器關係實現。但他們幾乎沒有問題,我不知道如何解決。這裏是客戶端和服務器的代碼: 客戶端和服務器都是分開的。他們中的每一個都是我寫的不同的項目。簡單實現TCP客戶端服務器關係
public void Server()
{
try
{
IPAddress IP = IPAddress.Parse("127.0.0.1");
TcpListener Listener = new TcpListener(IP, 8001);
Listener.Start();
Socket s = Listener.AcceptSocket();
byte[] b = new byte[100];
int k = s.Receive(b);
for (int i = 0; i < k; i++){
ConsoleWpfGUI.Write(Convert.ToChar(b[i]));
}
ASCIIEncoding asen = new ASCIIEncoding();
s.Send(asen.GetBytes("The string:"+strTemp+ " was recieved by the server."));
s.Close();
Listener.Stop();
}
catch (Exception e) {
ConsoleWpfGUI.WriteLine("Error..... " + e.StackTrace);
}
}
}
public void Client()
{
try
{
TcpClient tcpclnt = new TcpClient();
tcpclnt.Connect("127.0.0.1", 8001);
String str = InputString.Text;
Stream stm = tcpclnt.GetStream();
ASCIIEncoding asen = new ASCIIEncoding();
byte[] ba = asen.GetBytes(str);
stm.Write(ba, 0, ba.Length);
byte[] bb = new byte[100];
int k = stm.Read(bb, 0, 100);
for (int i = 0; i < k; i++)
ConsoleWpfGUI.Write(Convert.ToChar(bb[i]));
tcpclnt.Close();
}
catch (Exception e)
{
ConsoleWpfGUI.Text = "No connection..... ";
}
}
}
1.聽者不能正常工作,即,收聽捕獲GUI線程(SERV以及我在WPF使用客戶端類)。而不是在單獨的線程中運行,導致應用程序一旦按下「listen」(啓動類服務的Buttoon)就無響應。
- 只有在第一個呼叫被回覆的情況下,下一次發送失敗。導致不處理插入並傳遞給服務器端的單獨線程。
我該如何使用線程,serv類不會卡住應用程序。 以及我如何正確使用socketing和傳遞的線程,這將使我的應用程序更多的工作。
謝謝!
最簡單的方法之一 - 使用backgroundworker。 – VikciaR 2014-12-08 08:21:53