İletişim kuracak ve bazı rasgele dosyalar gönderecek TCPIP sunucusu ve istemci uygulamaları yapmalıyım. Şimdiye kadar bu yapılmış:TCPIP sunucusu/klinik uygulama iletişimi nasıl düzeltilir
Sunucu:
static void Main(string[] args)
{
IPAddress localIP = IPAddress.Parse("127.0.0.1");
TcpListener tcpServerListener = new TcpListener(localIP, 1234);
tcpServerListener.Start();
Console.WriteLine("Service started...");
while (true)
{
var serverSocket = tcpServerListener.AcceptTcpClient();
Console.WriteLine("Request accepted!");
if (serverSocket.Connected)
{
Do(serverSocket);
}
Console.WriteLine("Waiting for new request...");
Console.ReadLine();
}
}
private static void Do(TcpClient serverSocket)
{
var serverSockStream = serverSocket.GetStream();
var reader = new StreamReader(serverSockStream);
var poruka = reader.ReadLine();
var odgovor = "Hello " + poruka;
var writer = new StreamWriter(serverSockStream);
writer.Flush();
reader.Close();
writer.Close();
}
Müşteri:
static void Main(string[] args)
{
TcpClient tcpClient = new TcpClient("127.0.0.1", 1234);
NetworkStream clientSockStream = tcpClient.GetStream();
var writer = new StreamWriter(clientSockStream);
writer.WriteLine("TCP/IP Client");
writer.Flush();
var reader = new StreamReader(clientSockStream);
var odgovor = reader.ReadLine();
Console.WriteLine("Answer received: " + odgovor);
writer.Close();
reader.Close();
}
Karşılıklı sorun olduğunu ben iletişimi, ikinci tepki çöker ulaşmak kez:
Her bir soket adresinin (protokol/ağ adresi/bağlantı noktası) yalnızca bir kullanımına normal olarak izin verilir
Peki, bu hatayı düzeltmek ve daha sonra dosyaları göndermeye nasıl izin verilir? (daha sonra serileştirme vb.)
Bağlantı noktası tükenmesi hakkında bir makale var. Bir Biztalk makalesi olduğu gerçeğiyle yanıltılmasın, sorunun nasıl teşhis edileceğine dair biraz bilgi var: https://msdn.microsoft.com/en-us/library/aa560610(v=bts.20) .aspx – mnemonic
Sunucuyu birden çok kez başlatmaya çalıştığınızdan emin misiniz? İstemciden farklı olarak, asla çıkmaz (ve Console.ReadLine, siz enter tuşuna basana kadar başka bir istemci almanızı engeller, neden bunu yapmak istediğinizden emin değilsiniz). Her neyse, TCP'nin doğru olması oldukça zor. Zaten çalışan bir şey kullanmak istemediğinden emin misin? Eğer evet ise, TCP'nin ilk olarak nasıl çalıştığını öğrenin ve pratikte karşılaşabileceğiniz sorunları ve tüm farklı durumları ve hata senaryolarını nasıl ele alacağınızı öğrenin. – Luaan
Cevabınızı doğru olarak işaretleyebilmek için cevabınızı doğru olarak cevaplayabilirsiniz, çünkü sorunumu iletişim ile mi çözdünüz? Teşekkürler. @Luaan –