PDA

View Full Version : ارسال متن به سمت سرور با استفاده از سوکت ها



sarasry
یک شنبه 25 تیر 1391, 13:03 عصر
با سلام خدمت دوستان
برای اینکه بتونم یوزر وپسورد رو به سمت سرور که شامل یک ipوشماره پورت میشه باید از توابع سمت کلاینت سوکت ها استفاده کنم ،درسته؟
اگر اینطور باشه با استفاده از کد زیر این کار رو انجام دادم ، حالا این سرور چه طور میخواد بفهمه که من بهش یوزر وپسورد دادم که بخواد صحت اون چک کنه؟
IPAddress ip = IPAddress.Parse("172.30.1.100");
int iPortNo = System.Convert.ToInt16("444");
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint server = new IPEndPoint(ip, 444);
sock.Connect(server);
string user = textBox4.Text;
string pass = textBox4.Text;
byte[] byData = System.Text.Encoding.ASCII.GetBytes(user+pass);
if (sock.Connected)
sock.Send(byData);

fjm11100
یک شنبه 25 تیر 1391, 13:47 عصر
حالا باید یک سرور داشته باشی که به اون پورت 444 که داده ارسال میشه گوش بده. یک شی از جنس TcpListener میسازی و بعد متد Start اون را کال می کنی بعد هم AcceptSocket را صدا میزنی که سوکت را بهت بر می گردونه که اون سوکت یک متد Receive داره که میتونی بافرت را به اون بدی تا با داده دریافتی پرش کنه. نمونه کدش هم توی msdn هست.

hamid_hr
یک شنبه 25 تیر 1391, 13:50 عصر
فکر کنم باید سمت سرور هم یک نرم افزار به پورت 444 گوش کنه تا بهت accept بدهخ بعد اطلاعاتت رو بگیره و بعدش بقیه داستان.

اول سرور رو باید اجراش کنی بعد کلاینت رو :چشمک:

البته با اجازه از اساتید ...............

saman_h
دوشنبه 26 تیر 1391, 20:51 عصر
سلام
دقیقا همونطور که دوستان اشاره کردن من کامل ترش میکنم : Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
TcpListener server = new TcpListener(ipAddress, port);
server.Start();
sock = server.AcceptSocket();
بجای ipAddress و port اون آی پی و پورت مورد نظرتو بذار
بعد از اون شما باید داخل سرور اون بخش user و pass رو جدا کنید . البته لازمش اینه که شما در کلاینت اونارو با یه کارکتر خاص از هم جدا کنید بعد بفرستید که بتونید داخل سرور با دستور Spilit اونارو از هم جدا کنید . به این صورت که در کلاینت اینو ارسال میکنید : byte[] byData = System.Text.Encoding.ASCII.GetBytes(user +"|||"+ pass); و در سرور به این صورت دریافت میکنی و بعد جداش میکنید : sock.Receive(buff, SocketFlags.None);
string txt_beforeSplit = Encoding.UTF8.GetString(buff);
string[] Arr_After_Split = txt_beforeSplit.Split('|||');
string username=Arr_After_Split[0];
string Pass=Arr_After_Split[1];

حالا میتونی مقدار username و pass رو داخل دوتا textbox یا هرچیز دیگه ( دوسم نداشتی نریز ! همونطوری استفاده کن ) بریز و با database و ... که میخوای چکش کن
موفق باشی