الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة في الإرسال من خلال Tcp

بدأه MKSoft في 14 أبريل 2008 · 2 رد · 660 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هناك مشكلة تحدث معي اثناء ارسال الزبون رسالة الي الخادم , فساعدوني في حلها , خاصة اني مبتدأ في برمجة شبكات C# .

كود برنامج الخادم

using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.IO;

namespace Server
{
	class Srv
	{
		TcpListener listener;
		NetworkStream network_path;
		StreamReader reader;
		Socket socket;
		public Srv()
		{
			try
			{
				listener = new TcpListener(12500);
				listener.Start();
				Console.WriteLine("Server now Listening");
				socket = listener.AcceptSocket();
				Console.WriteLine("Server Accepts the connection");
		  //	  network_path = new NetworkStream(socket);
			//	reader = new StreamReader(network_path);
			}
			catch (Exception ex)
			{
				Console.WriteLine(ex.Message);
			}
		}
		public void recieve()
		{
			while (true)
			{
				try
				{
					network_path = new NetworkStream(socket);
					reader = new StreamReader(network_path);
					Console.WriteLine(reader.ReadLine());
				}
				catch (IOException ex)
				{
					Console.WriteLine(ex.Message);
				}
			}


		}
		static void Main(string[] args)
		{
			Srv prog = new Srv();
			prog.recieve();
		}
	}
}

////////////////////////////////////

كود برنامج العميل

using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.IO;

namespace Client
{
	class Cln
	{
		static TcpClient client;
		static NetworkStream netowrk_path;
		static StreamWriter writer;
		public Cln()
		{
			try
			{
				Console.WriteLine("------------1");
				client = new TcpClient("127.0.0.1", 12500);
				netowrk_path = client.GetStream();
				Console.WriteLine("------------2");
				writer = new StreamWriter(netowrk_path);
				Console.WriteLine("------------3");
			}
			catch (SocketException ex)
			{
				Console.WriteLine(">><><><><>><>"+ex.Message);
			}
		}
		static void Main(string[] args)
		{
			Cln c = new Cln();
			c.send("Client >> Hello World");

		}
		public void send(string str)
		{
			writer = new StreamWriter(netowrk_path);
			Console.WriteLine("------------3");
			Console.WriteLine("------------4");
			writer.WriteLine(str);
			Console.WriteLine("------------5");
		}
		public void close()
		{
			try
			{
				client.Close();
				netowrk_path.Close();
			}
			catch (Exception ex)
			{
				Console.WriteLine(ex.Message);
			}
		}
	}
}
#2

السلام عليكم

يا ريت لو تكتب ماهي رساله الخطأ بالتحديد

عموما انا لما أرى في الكود في جزء الـ Client إستخدامك للداله Connect في الكود التالي

public Cln()
		{
			try
			{
				Console.WriteLine("------------1");
				client = new TcpClient("127.0.0.1", 12500);
				netowrk_path = client.GetStream();
				Console.WriteLine("------------2");
				writer = new StreamWriter(netowrk_path);
				Console.WriteLine("------------3");
			}
			catch (SocketException ex)
			{
				Console.WriteLine(">><><><><>><>"+ex.Message);
			}
		}
#3

Unable to read data from the transport connection : An exisiting connection was forcibly close by remote host.

حقيقة ان Client , بعد ان يقوم بإستدعاء دالة الإرسال send , فإنه ينفذها , وبعدها مباشرة يخرج بشكل تلقائي , أي ينطفيء بشكل تلقائي ..

وبعدها تظهر جملة كثيرة في Server .

The Operation is not allowed on non - connected socket.

مواضيع مشابهة