Sinceramente non capisco molte cose su quello che hai fatto, esempio:
//nel client
int x = 1;
byte[] byData = System.Text.Encoding.ASCII.GetBytes(Convert.ToString(x));
//nel server
string portStr = "1234";
int port = System.Convert.ToInt32(portStr);
Che senso hanno queste conversioni? Devi sapere che le conversioni influiscono sulle prestazioni di un'applicazione quindi è sempre meglio usarle solo quando ne hai veramente bisogno.
Nel tuo caso quindi:
//nel client
m_socListener.Send(Encoding.ASCII.GetBytes("Prova"));
//nel server
IPEndPoint ip = new IPEndPoint(IPAddress.Any, 1234);
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Ovviamente quello che hai postato è un codice molto grezzo e dovresti sistemare un bel pò di cose, ma ti faccio un'esempio al volo per leggere i dati ricevuti dal client:
socket.Bind(ip);
socket.Listen(10);
Console.WriteLine("In attesa di un client..");
Socket client = socket.Accept();
IPEndPoint clientep =(IPEndPoint)client.RemoteEndPoint;
Console.WriteLine("Connesso con {0} alla porta {1}",clientep.Address, clientep.Port);
string welcome = "Benvenuto";
byte[] data = new byte[1024];
data = Encoding.ASCII.GetBytes(welcome);
client.Send(data, data.Length,SocketFlags.None);
while(true)
{
data = new byte[1024];
int receivedDataLength = client.Receive(data);
Console.WriteLine(Encoding.ASCII.GetString(data, 0, receivedDataLength));
client.Send(data, receivedDataLength, SocketFlags.None);
}
Console.WriteLine("Disconnesso da {0}",clientep.Address);
client.Close();
socket.Close();
Non sò che tipo di applicazione stai sviluppando, ma valuta bene anche la possibilità di utilizzare il Remoting.
Saluti,
Rocco Verrastro
.NET Programmer - Web Developer
http://devjoker.blogspot.com