PDA

View Full Version : سوال در مورد سوکت و سرور



Mr.cpp
یک شنبه 01 تیر 1393, 19:24 عصر
سلام خدمت همه عزیزان
دوستان من در سی شارپ برنامه نویسی سوکت میکنم ولی با آی پی 127.0.0.1 همون لوکال هاست اما بعضی برنامه های سوکت رو دیدم که از آی پی مانند *.*.192.168 استفاده میکنن در حالی من دربرنامم از این آی پی استفاده میکنم ارور میده برای اینکه بتونم از یک همچین آی پی بجای لوکال هاست استفاده کنم باید چه کنم؟ اینم سورس برنامه :
using System;using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Sockets;
using System.Net;


namespace sct
{
class Program
{
static Byte[] buffer = new byte[1024];
static void Main(string[] args)
{
//Socket
Socket srv = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipe = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2009);
srv.Bind(ipe);
srv.Listen(100);
srv = srv.Accept();
Byte[] byt = Encoding.ASCII.GetBytes("Salam Khoobi?");
srv.Send(byt);
Byte[] buf =new byte[1024];
srv.Receive(buf);
String str = Encoding.ASCII.GetString(buf);
Console.WriteLine(str);
if (String.Equals(str,"Close"))
{
Console.WriteLine("12");
Console.ReadLine();
}
else
{
Console.WriteLine("11");
Console.ReadLine();
}
srv.Close();
Console.WriteLine("Closed");
Console.ReadLine();
}


}
}



بعد یه سوال دیگه با استفاده از این سورس از کلاینت فقط میتونم تنها یک کاراکتر دریافت کنم اگه بخوام یک جمله دریافت کنم باید چه کنم؟ ممنون

plus
یک شنبه 01 تیر 1393, 20:35 عصر
در مورد شبکه زیاد وارد نیستم ولی آیپی هایی در بازه ای که گفتین معمولا مربوط به کارت شبکه هستن.یعنی اگه شما یک کارت شبکه داشته باشین و آدرس 192.168.1.2 رو بهش داده باشین، این آیپی هم یه جورایی لوکال به حساب میاد مربوط به خود سیستم جاری هست.

Mr.cpp
دوشنبه 02 تیر 1393, 15:33 عصر
Up
لطفا پاسخ بدین :افسرده:

amirzandi
دوشنبه 02 تیر 1393, 17:47 عصر
شما باید یک Listener روی پورت ۲۰۰۹ که استفاده می کنی روی یک دستگاه دیگر که در شبکه شما در حال کار کردن هست قرار بدی… بعد بجای localhost از آی پی دستگاه استفاده کنی

توجه داشته باشید اگر دستگاه در شبکه شما نباشد نمی توانید استفاده کنید مگر اینکه هر ۲ دستگاه به اینترنت متصل باشند که بحثش خیلی مفصل هست.

Mr.cpp
سه شنبه 03 تیر 1393, 10:38 صبح
شما باید یک Listener روی پورت ۲۰۰۹ که استفاده می کنی روی یک دستگاه دیگر که در شبکه شما در حال کار کردن هست قرار بدی… بعد بجای localhost از آی پی دستگاه استفاده کنی

توجه داشته باشید اگر دستگاه در شبکه شما نباشد نمی توانید استفاده کنید مگر اینکه هر ۲ دستگاه به اینترنت متصل باشند که بحثش خیلی مفصل هست.

الان یک گوشی و یک لپ تاپ به کامپیوتر متصل هست و گوشی رو در پورت 2009 با یک برنامه listen کردم اما وقتی آی پی برنامه رو به آی پی ای که موبایل نشون میده تغییر میدم ارور میده که :has requested address is not valid in this context

hamid_hr
سه شنبه 03 تیر 1393, 11:03 صبح
ببین این برنام که شما نوشتی تو پست اول کد مربوط به سروره
اگه میخوای به گوشی وصل بشی باید کد مربوط به کلاینتو بزاری و ای پی گوشی و پورت 2009 رو بزنی

Mr.cpp
سه شنبه 03 تیر 1393, 11:20 صبح
ببین این برنام که شما نوشتی تو پست اول کد مربوط به سروره
اگه میخوای به گوشی وصل بشی باید کد مربوط به کلاینتو بزاری و ای پی گوشی و پورت 2009 رو بزنی
یعنی باید با TcpClient کد بزنم؟
امکانش هست نمونه کدی چیزی بدین یا لینک؟
سپاس

negative60
سه شنبه 03 تیر 1393, 13:28 عصر
اول شما سرور و کلاينت رو مشخص کن لازم نيست با سرور به موبايل وصل بشيد
دوم تو سرورت شما آيپی 127.0.0.1 رو ليستن کرديد اين آيپی لوکال کامپيوتر شماست! خارج از کامپيوترت کسی نميتونهبه برنامه ات وصل بشه

IPAddress.Parse("127.0.0.1")
رو به
IPAddress.Any

تغيير بده و بعد به آيپی کامپيوتر با پورتی که مشخص کردی متصل شو.
در ضمن اين روش کار با سوکت ها درست نيست فقط به درد تست ميخوره سعی کن برای مديريت سوکت از توابعی که با Begin شروع ميشن استفاده کنی.

Mr.cpp
سه شنبه 03 تیر 1393, 23:16 عصر
اول شما سرور و کلاينت رو مشخص کن لازم نيست با سرور به موبايل وصل بشيد
دوم تو سرورت شما آيپی 127.0.0.1 رو ليستن کرديد اين آيپی لوکال کامپيوتر شماست! خارج از کامپيوترت کسی نميتونهبه برنامه ات وصل بشه

IPAddress.Parse("127.0.0.1")
رو به
IPAddress.Any

تغيير بده و بعد به آيپی کامپيوتر با پورتی که مشخص کردی متصل شو.
در ضمن اين روش کار با سوکت ها درست نيست فقط به درد تست ميخوره سعی کن برای مديريت سوکت از توابعی که با Begin شروع ميشن استفاده کنی.
مرسی ار راهنمایی
بله درسته از روش Async بهتره چون موقع انجام اعمال برنامه قفل نمیکنه