hello
I make 2 program one is server and the another is the client
the client is work fine
but the server do not accept the client connection
I cant find the problem in my code
please some help :(
this is my code
using System;
using System.Collections.Generic;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Net.Sockets;
using System.Net;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
IPEndPoint ServerIPE;
IPAddress ServerIP;
int ServerPort;
Thread ListenThread;
String remoteIP;
String remotePort;
TcpClient strr;
private TcpListener TcpSer;
private TcpClient TcpCli;
delegate void RecieveMsgDel(string msg, TcpClient Client);
RecieveMsgDel rMsgDel;
private ArrayList client = new ArrayList();
private ArrayList thrdArry = new ArrayList();
public delegate void ChangedEventHandler(object sender, EventArgs e);
public event ChangedEventHandler Changed;
public delegate void SetListBoxItem(String str, String type);
public Form1()
{
InitializeComponent();
Changed += new ChangedEventHandler(ClientAdded);
TreeNode node;
node = treeView1.Nodes.Add("Connected Clients");
}
class MyEventArgs : EventArgs
{
private TcpClient sock;
public TcpClient clientSock
{
get { return sock; }
set { sock = value; }
}
public MyEventArgs(TcpClient tcpClient)
{
sock = tcpClient;
}
}
public void NewClient(Object obj)
{
ClientAdded(this, new MyEventArgs((TcpClient)obj));
}
public void ClientAdded(object sender, EventArgs e)
{
TcpCli = ((MyEventArgs)e).clientSock;
remoteIP = ((IPEndPoint)TcpCli.Client.RemoteEndPoint).Address.ToString();
remotePort = ((IPEndPoint)TcpCli.Client.RemoteEndPoint).Port.ToString();
strr = new TcpClient(remoteIP,int.Parse(remotePort)) ;
UpdateClientList(remoteIP + " : " + remotePort, "Add");
thrdArry.Add(Thread.CurrentThread);
if(true)
{
Thread clientThread = new Thread(new ParameterizedThreadStart(RemotClient));
clientThread.Start();
}
}
private void RemotClient(object client)
{
if (client.Equals(strr))
{
RemoteClient remote = new RemoteClient();
remote.SendByte(TcpCli.Client,strr);
}
}
private void UpdateClientList(string str, string type)
{
{ }
if (this.treeView1.InvokeRequired)
{
SetListBoxItem d = new SetListBoxItem(UpdateClientList);
this.Invoke(d, new object[] { str, type });
}
else
{
if (type.Equals("Add"))
{
client.Add(str);
this.treeView1.Nodes[0].Nodes.Add(str);
}
else
{
foreach (TreeNode n in this.treeView1.Nodes[0].Nodes)
{
if (n.Text.Equals(str))
{
this.treeView1.Nodes.Remove(n);
client.Remove(str);
}
}
}
}
}
public void StopServer()
{
if (TcpSer != null)
{
foreach (Thread t in thrdArry)
{
t.Abort();
}
client.Clear();
treeView1.Nodes[0].Nodes.Clear();
ListenThread.Abort();
TcpSer.Stop();
}
Port.Enabled = true;
}
private void Form1_FormClosing(Object sender, FormClosingEventArgs e)
{
StopServer();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
ServerIP = IPAddress.Parse("127.1.1.1");
ServerPort = int.Parse(Port.Text);
ServerIPE = new IPEndPoint(ServerIP, ServerPort);
TcpSer = new TcpListener(ServerIPE);
ListenThread = new Thread(new ThreadStart(ListenForClients));
ListenThread.Start();
ConnBotn.Enabled = false;
}
private void ListenForClients()
{
IPAddress localAddr = IPAddress.Parse("127.0.0.1");
TcpSer = new TcpListener(localAddr, Int32.Parse(Port.Text));
TcpSer.Start();
while (true)
{
Thread t = new Thread(new ParameterizedThreadStart(NewClient));
TcpCli = TcpSer.AcceptTcpClient();
t.Start(TcpCli);
}
}
the tree view must print all client connect to the server
but nothing printed
thanks in advance